Sabtu, 12 November 2011

Form Input sekaligus sebagai Form Output

Dalam mengerjakan tugas sehari-hari di sekolah, seringkali kita berhubungan dengan DATA. Akan lebih mudah bagi operator data jika data tersebut didesain secara simple. Secara umum, desain Data terdiri dari tiga bagian, yakni Input, Proses, Output.
Tulisan kali ini membahas tentang pembuatan Form Input yang sekaligus juga digunakan sebagai Form menampilkan output dari data yang sudah kita simpan sebelumnya. Form yang berfungsi ganda ini biasanya digunakan untuk: Rekap Absen, Formulir Pendaftaran Siswa, Pengisian Nilai, dan lain sebagainya.
Untuk contoh kita kali ini, disajikan Form pengisian Data Siswa per kelas.



Pada gambar di atas, form digunakan sebagai input data siswa per kelas. Jadi, jika ingin memasukkan data baru untuk kelas X-a, langsung kita tulis di tabel, kemudian setelah menekan tombol 'Simpan', maka data yang kita tulis disimpan di tabel penyimpanan. 
Untuk mengisi data kelas yang lain, maka kita pilih kelasnya melalui Combo Box, kita tuliskan datanya lalu klik 'Simpan'. 


Karena form tadi juga berfungsi sebagai Output, maka ketika kita pilih suatu kelas, maka tabel yang tampil di layar akan menampilkan data dari kelas tersebut sesuai yang sudah tersimpan.


Untuk membuat form yang bisa berfungsi ganda tersebut, setidaknya kita butuh 2 objek. Yakni objek untuk menyimpan data termasuk data baru, dan objek untuk menampilkan data yang sudah ada. Dalam contoh ini, untuk menyimpan data kita menggunakan Shape yang diberi Macro. Coding macro untuk menyimpan data di sheet yang sesuai adalah:



       Sub Simpan()



Dim Kls As String
Dim Jml As Single


NoKls = Range("D5").Value
Kls = Choose(NoKls, "a", "b", "c", "d")
Jml = 7 + Application.WorksheetFunction.CountA("c7:c1000")
   
Application.ScreenUpdating = False
    Range("B7:E" & Jml).Copy
    Sheets("X-" & Kls).Range("A4").PasteSpecial xlPasteValues
Application.CutCopyMode = False


Call ShowNilai


End Sub
Metode yang digunakan macro di atas adalah mengkopi data di tabel ke sheet yang sesuai. (Untuk tiap kelas kita buat Sheet khusus sesuai dengan nama kelas).

Sedangkan kode Macro untuk menampilkan data siswa sesuai dengan kelas yang dipilih adalah:

Sub ShowNilai()

NoKls = Range("D5").Value
Kls = Choose(NoKls, "a", "b", "c", "d")
Application.ScreenUpdating = False
    Sheets("X-" & Kls).Range("A4:D1000").Copy
    Range("Form!B7").PasteSpecial xlPasteValues
Application.CutCopyMode = False
ThisWorkbook.Save
Application.ScreenUpdating = True
Range("B7").Select
End Sub
Metode yang digunakan adalah kebalikan dari yang pertama, yakni mengkopi data di sheet yang sesuai, kemudian mem-paste-kan di form.

Sebenarnya metode yang bisa dipakai untuk menampilkan atau menyimpan data tidak hanya menggunakan Copy-Paste sebagaimana coding di atas. Tapi bagi pemula dalam belajar VBA seperti saya, penggunakan metode Copas terasa lebih mudah dan sederhana.

Nah, file contoh Form yang berfungsi ganda bisa didownload di BoxNet pada sidebar atau di sini


Artikel Terkait:

6 komentar:

praztmath mengatakan...

mas, mohon pencerahan dari permasalahan saya ini...
misal pada cell C4 saya isi 60% maka pada cell D4 otomatis terisi 40%,
begitu juga sebaliknya, apa bila pada cell D4 saya isi 80% maka pada cell C4
otomatis terisi 20%, dan jika salah satu cell tersebut saya isi 100% maka
cell yang satunya kosong (todak nol%). jadi pada intinya jumlah kedua cell tersebut selalu 100%.
apakah harus pakai macro atau gmana..??
terima kasih

Udin Haeruddin mengatakan...

Urusan seperti itu tidak bisa menggunakan rumus biasa. Menurut saya harus pake Makro dengan memanfaatkan Worksheet_Events.
Caranya:
0. Formatlah kedua cel tersebut dengan Custom Number Format 0%;;""
1. Klik kanan nama sheet. Klik View Code
2. Copy paste-kan kode berikut:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row = 4 Then
If Target.Column = 3 Then
Cells(4, 4).Value = Format(1 - Target.Value, "0%")
ElseIf Target.Column = 4 Then
Cells(4, 3).Value = Format(1 - Target.Value, "0%")
End If
End If
End Sub

4. Kembali ke Excel, dan dicoba hasilnya.

File contoh akan dikirim via email

Andri Sodikin Blog mengatakan...

Kalau cara menambah kelas nya gimana ???

yudiana mengatakan...

KNAPA DATA YANG DI INPUT TIDAK BISA DI SIMPAN. MOHON BANTUANNYA

Anonim mengatakan...

Sub Simpan()



Dim Kls As String
Dim Jml As Single


NoKls = Range("D5").Value
Kls = Choose(NoKls, "a", "b", "c", "d")
Jml = 7 + Application.WorksheetFunction.CountA("c7:c1000")

Application.ScreenUpdating = False
Range("B7:E" & Jml).Copy
Sheets("X-" & Kls).Range("A4").PasteSpecial xlPasteValues
Application.CutCopyMode = False


Call ShowNilai


End Sub


ganti kode

Application.ScreenUpdating = False
Range("B7:E" & Jml).Copy

dengan

Application.ScreenUpdating = False
Range("B7:E7" & Jml).Copy

thaqdier alisyahsyahbana mengatakan...

Mas Heru yang cakep mohon pencerahannya dari masalah saya ini...
1. bagaimana cara mengganti nama tiap kolom atau menambah nama kolom baru
2. bagaimana cara mengganti kode kelas menjadi kode perusahaan atau nama/kode cabang
3. bagaimana menghubungkan sheet baru bila ada penambahan cabang baru atau nama perusahaan yang baru

Terima Kasih
E-Mail : mtaqdir529@gmail.com