Menampilkan Data Excel di Visual Basic

Menampilkan Data Excel di Visual Basic

VBA Excel adalah teknologi yang bagus dan telah menyelesaikan persoalan banyak orang. Seseorang bertanya bagaimana menampilkan Id Pelanggan (ID_Pel) di I3 jika drop-down (Nama) di H3 diubah. Persoalan seperti ini adalah wilayah VBA Excel, dimana pengguna butuh kendali lebih atas data namun dapat tetap interaktif.

Menampilkan Data Excel di Visual Basic

Sejujurnya penulis sudah >11 tahun tidak pernah lagi memprogram Basic, terakhir VB 6.0, karena itu bahkan untuk membuka VBA Excel penulis harus meng-googling (ternyata Alt + F11 di Excel). Karena file yang penulis buat adalah reproduksi dari kasus di atas, penulis juga harus meng-googling bagaimana cara membuat drop-down list dengan nilai dari kolom B. Penulis sempat berpikir membuat drop-down list harus dengan VBA, dan ternyata cukup menggunakan Menu Data > Data Tools > Data Validation di Excel, hahaha.

Langkahnya seperti ini, klik pada sel tujuan tempat menampilkan drop-down list (combo box), misal H3 lalu di Ribbon Excel pilih Data > Data Tools > Data Validation > Data Validation.

Menampilkan Data Excel di Visual Basic

Di Tab Settings pilih Allow: List, Hapus Centang pada Ignore Blank dan pilih Source: (misal =$B$2:$B$17).

Menampilkan Data Excel di Visual Basic

Pada Tab Input Message, Hapus Centang di pilihan Show input message when cell is selected, Lalu klik OK.

Menampilkan Data Excel di Visual Basic

Sekarang jika kita meng-klik sel H3 akan muncul segitiga yang akan menampilkan daftar Nama (kolom B).

Menampilkan Data Excel di Visual Basic

Sekarang bagaimana bila ingin menampilkan ID_Pel di sel I3 jika drop-down list berubah? Inilah saatnya VBA Excel tampil, kodenya cukup beberapa baris. Namun karena tidak terbiasa dengan VBA, penulis membutuhkan > 3 jam untuk mencapai 23 baris ini.

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$H$3" Then
With Application
    .EnableEvents = False
    .ScreenUpdating = False
    .Calculation = xlCalculationManual
End With
Dim arrCustomer As Variant
arrCustomer = ActiveSheet.Range("$B$2:$C$17")

Dim R As Long

For R = 1 To UBound(arrCustomer, 1)
If arrCustomer(R, 1) = ActiveSheet.Range("$H$3").Value Then
ActiveSheet.Range("$I$3").Value = arrCustomer(R, 2)
End If
Next R

With Application
    .EnableEvents = True
    .ScreenUpdating = True
    .Calculation = xlCalculationAutomatic
End With
End If
End Sub

Kode di atas adalah fungsi yang akan dipanggil jika terjadi perubahan pada worksheet. Perubahan apa? Jika sel H3 berubah. Penulis tidak paham baris With Application sampai End With tapi sepertinya itu adalah blok kode standar untuk fungsi Worksheet_Change.

Dim arrCustomer artinya membuat array yang akan menampung nilai dari $B$2 sampai $C$17. Lalu ada variable R, bertipe Long Integer yang digunakan saat perulangan membaca nilai dari kolom B baris 2 sampai 17. Jika pada perulangan tersebut ditemukan baris yang kolom B-nya berisi nama yang sama dengan H3 maka I3 diisi dengan nilai kolom C dari baris tersebut.

Dah, gitu doank. Jangan lupa menyimpan VBA Excel dan file Excel disimpan dalam type Excel Macro-Enabled Workbook (*.xlsm).

Menampilkan Data Excel di Visual Basic

Hasilnya dalam gif seperti ini, terimakasih pada member grup Excel Indonesia yang sudah memberikan wacana soal gif.

Menampilkan Data Excel di Visual Basic

Terimakasih pada pak Gufron G yang memberikan alternatif lain jika ingin menghindari VBA. Pada I3 alih-alih menggunakan VBA kita dapat menggunakan formula pendek.

=VLOOKUP(H3,B:C,2,0)

Ide Excel lain dari pak GG sila baca di tulisan di linkedin ini.

Salam.