Macro Excel

Memfilter Data Berdasar Tanggal dengan VBA Excel

Ada masanya kita ingin memfilter data di Excel dengan kriteria berdasarkan tanggal dimulai dan tanggal berakhir.
Tujuannya agar hasil filter tersebut bisa di cetak sesuai dengan tanggal yang sudah kita tentukan tersebut.
Untuk memfasillitasi kebutuhan ini, maka yang perlu dilakukan adalah:

  1. Membuat sebuah tabel yang akan di filter data tanggalnya
  2. Membuat range dinamis agar bisa diinput dalam ComboBox Userform
  3. Membuat Userform, 2 Combobox, 1 Command Button agar pencarian tanggal dilakukan dengan mudah

Setelah disiapkan kebutuhan di atas, maka hal selanjutnya adalah membuat kode seperti di bawah ini:

'Option Explicit

Private Sub CommandButton1_Click()
Dim wsDtbsPjln As Worksheet
Set wsDtbsPjln = Sheets("Sheet3")
Set rngTanggal = wsDtbsPjln.Range("Tabel1")

Worksheets("Sheet3").ListObjects("Table13").Range.AutoFilter _
Field:=1, Criteria1:=">=" & UserForm1.ComboBox1.Value _
, Operator:=xlAnd, Criteria2:="<=" & UserForm1.ComboBox2.Value

wsDtbsPjln.PrintOut Copies:=1, Collate:=True
ActiveSheet.Range("Tabel1").AutoFilter Field:=1
End Sub

Private Sub UserForm_Initialize()
Dim wsDtbsPjln As Worksheet
Dim rngTanggal As Range
Set wsDtbsPjln = Sheets("Sheet3")
Set rngTanggal = wsDtbsPjln.Range("Tabel1")

Sheets("Sheet3").Activate
For Each rngTanggal In wsDtbsPjln.Range("Tabel1")
 With Me.ComboBox1
 .AddItem rngTanggal.Value
 End With
Next rngTanggal

For Each rngTanggal In wsDtbsPjln.Range("Tabel1")
 With Me.ComboBox2
 .AddItem rngTanggal.Value
 End With
Next rngTanggal
End Sub

Setelah dimasukkan kodenya, maka hasilnya akan tampak seperti gambar berikut ini:

Image 8

Agar lebih mudah memahami, silakan coba Filenya di : Download

Program Kasir Menggunakan Excel (Point Of Sale)

Berawal dari keinginan membuat toko gustika konveksi, penulis mencari program kasir seperti layaknya Indo****t atau Al******art sehingga kasir dengan mudah melakukan transaksi barang yang dijual.  Akhirnya penulis berselancar ke toko saya di bukalapak dan mencari program kasir seperti yang dimaksud, dan banyak sekali pedagang menjual program-program hasil “hack” dari program-program POS tersebut.
Dan, penulis pun membeli salah satu yang paling “OK” diantara sekian banyak toko yang menawarkan program, akhirnya barang sampai ke alamat dengan selamat, meski sebelumnya dikasih nomor resi palsu.

Setelah barang dicoba, ternyata program meminta “Keygen Generator” penulis yakin semua orang yang berhubungan software ba***kan tau tentang itu.  Tetapi dalam DVD yang dikirimkan tidak ada Keygen nya. Sehingga program itu hanyalah program yang tidak terpakai, karena tidak bisa dibuka akibat aktivasi yang belum selesai.

Akhirnya, berkat sedikit pemahaman Macro Excel, dan beberapa formula hasil gogling sana gogling sini, terciptalah program ini.

Meskipun belum begitu sempurna, tetapi masih bisa digunakan, dan sesuai dengan kebutuhan penulis. Apabila kemudian hari, ada penambahan menu, dan terjadi bug, setidaknya penulis bisa mengutak-atik sendiri, karena proses pembuatannya dilakukan oleh penulis.

Bagi yang mau mencoba menggunakan program POS buatan saya, silakan download di link berikut ini:

Download

Username: Administrator
Password: berkat

Username: admin1
Password: yakin1
atau
Username: admin2
Password: yakin2

Bila nanti ada perbaikan, revisi, akan saya buatkan link nya di bawah ini.
________________ (lebih…)

Killing Time

Pada dasarnya posting ini adalah proses sesuai judul, yaitu: “Killing Time”, ntah karena jenuh perlu refreshing, atau karena penyebab lain, saya g mengerti.

Kemarin sore saya mencari kode-kode VBA di mbah Googgle dengan kata kunci VBA animation, dan hasilnya adalah:

Sub Tester1()
Dim sp As String
Dim sTxt As String
Dim x As Integer, y As Integer
Dim Start, delay

sTxt = "Hi there!!"
For y = 1 To 15 '15 Loops through the scrolling
For x = 1 To 30 'Index number of times
Start = Timer 'Set start to internal timer
delay = Start + 0.15 'Set delay for .15 secs
Do While Timer < delay 'Do the display routine
[D6] = Space(x) & sTxt 'Show 1 str @ a time
DoEvents 'do there things
Loop 'Loop until delay is up
DoEvents
Start = Timer 'and reset the timer
delay = Start + 0.15 'and the delay
Next x 'Show the next str
Next y 'Do this again - 15
[D6] = "" 'Reset
End Sub

Dengan menggunakan kode di atas bisa membuat animasi ‘text’ di dalam excel
Untuk variasi lainnya bisa dilakukan dengan modifikasi sesuai selera. Tadinya saya mau menautkan link dimana saya mengcopy datanya, tetapi jaringan lagi error, sehingga nanti akan diupdate sumber kodenya.

Semoga bermanfaat 😉

Update: Sudah ada sumber link nya : Disini

Menghindari User Mengklik tombol X pada USERFORM

Ada kalanya kita menginginkan pengguna software hanya mengklik tombol “cancel” saja untuk keluar form. Artinya klik tanda “X”  tidak diperbolehkan. Maka kodenya seperti di bawah ini:

Private Sub UserForm_QueryClose(Cancel As Integer, _
CloseMode As Integer)
If CloseMode = vbFormControlMenu Then
Cancel = True
MsgBox “Klik Tombol “Keluar” saja ya…!”
End If
End Sub

Semoga bermanfaat

🙂

Membuat Nama Range Dinamis di Excel (2007)

Untuk membuat nama range secara dinamis di Excel (2007), maka lakukan langkah-langkah berikut ini:

1. Buka workbook baru (posisikan cursor) pada sel yang akan menjadi patokan (judul) range tersebut

2. Klik Formulas -> Define Name -> Ketikkan Nama Range di Name; misalnya nama_kasir (tidak boleh ada spasi, spasi ganti dg underscore)

3. Scope pilih workbook (atau sheet yang ingin anda jadikan sumber data). Kalo workbook maka formula berlaku untuk semua kertas kerja.

4. Untuk refers to isi dengan:

=OFFSET(Sheet1!$A$2;1;0;COUNTA(Sheet1!$A:$A)-1;1) (untuk sumber data di kolom A)

=OFFSET(Sheet1!$B$2;1;0;COUNTA(Sheet1!$B:$B)-1;1) (untuk sumber data di kolom B)

=OFFSET(Sheet1!$B$2;1;0;COUNTA(Sheet1!$B:$B)-1;1) (untuk sumber data di kolom C)

=OFFSET(LookupLists!$A$2;0;0;COUNTA(LookupLists!$A:$A)-1;1) (cara lain menentukan data range pada kolom A dg nama sheet “lookuplist”)

=OFFSET(LookupLists!$F$2;0;0;COUNTA(LookupLists!$F:$F)-1;1) (cara lain menentukan data range pada kolom B dg nama sheet “lookuplist”)

5. Setelah itu tekan tombol OK. Untuk menguji hasilnya ketikkan nama range tersebut di NameBox Formula Bar (kotak di atas kolom A) dengan nama yang sudah kita masukkan di Define nama tersebut, kemudian tekan Enter. Hasilnya nama yang ada sesuai dengan kolom akan di sorot (terseleksi)

6. Untuk mengedit “define name” yang sudah kita buat tersebut adalah dengan: klik Formulas -> Name Manager -> Maka akan dilihat hasil rekaman yang sudah kita buat tersebut. J (silakan untuk di edit, dihapus, atau membuat nama baru sesuai kebutuhan)

Tips:

Untuk memudahkan penulisan Kode OFFSET di atas, sebaiknya anda mengcopy paste saja tulisannya agar tidak terjadi kesalahan ketik yang menyebabkan “error”