ada dua pendekatan
*PDKT I: Mencari sendiri
(maksodnya pakai logika sendiri, geetoo loch...)*
Sub LiburkahHariIni()
dim X as range
set Liburnas = WS.Range("Liburnas")
' mencari satu benda dari sekumpulan benda, paling gampang pakai LOOP
*for each X* in Liburnas
if X.value = Date then
msgbox "hari ini " & format(date, "dd-mmm-yy") & " = libur"
exit for
else
msgbox "hari ini " & format(date, "dd-mmm-yy") & _
" = bukan hari libur tapi mungkin saja sabtu ato minggu"
end if
*next X*
end sub
note:
Date adalah sebuah FUNGSI milik VBA, yg tanpa argument menghasilkan Tgl
system (hari ini)
seperti fungsi Today() di woksit.
di sini logical [ X .Value = Date] akan mengembalikan TRUE atau FALSE, dan
hanya kita manfaatkan
untuk memilih salah satu dari dua pesan yg akan ditampilkan melalui
KotakPesan
tentu saja dapat Anda ganti dengan statement / instruksi yg sesuai keperluan
anda saat itu.
Cara lain, (masih didalam rangka pendekatan I) kita membuat Fungsi Sendiri,
misal dinamai IsLibur
Fungsi ini nantinya dapat dimanfaatkan oleh prosedur lain, seperti contoh di
bawahnya
Private Function IsLibur(D as Date) as Boolean
dim X as range
set Liburnas = WS.Range("Liburnas")
for each X in Liburnas
if X.value = date then
Islibur = True
Exit for
end if
next X
end function
Sub Cecetcowet()
' ceritaknya dlm program
' akhhirnya dapat disimpulkan, variable bernama HariHa = Tgl sekian
' diinginkan mengetahui apakah HariHa = Libur
If *IsLibur*(HariHa) = true then
--- statement / instruksi jika hariHa emang libur --
Else
--- statement / instruksi jika hariHa bukan hari libur
-- (tetapi jangan lupa bukan hariLiburNas masih mungkin = minggu/sabtu
lho..)
end if
end sub
*PDKT II :
Kalo diinginkan cara tercepat kita dapat meminjam Fungsi Milik Excel
(Woksit)*
Banyak FUNGSI milik woksit yg dapat diaplikasikan di VBA, dengan cara
menyebutkan INDUKnya
lebih dahulu yaitu object yg benama *WorksheetFunction*
jika hari ini libur maka … (atau tepatnya: Jika Nilai TglHariIni ada
didalam Range Lliburnas, maka… )
If *WorksheetFunction*.*Countif(WS.Range("LiburNas"),Date)* = 1 Then
atau (dengan menggunakan variable dulu)
Dim HariIniLibur as Integer
HariIniLibur = WorksheetFunction.*Countif(WS.Range("LiburNas"),Date)*
If HariIniLibur = 1 Then
'---- bgini bgitu.....
Hal yg sering kita lupakan dlm pemrograman (karena mindset kita masih
bekerja di woksit..?)
adalah menuliskan ekspresi tanpa menampungnya ke dalam sebuah variable
WorksheetFunction.Countif(WS.Range("LiburNas"),Date)
tentu di VBA akan dianggap salah karena berupa kalimat yg belum selesai
(Ruas Kiri-nya Ndak Ada !!)
rupanya kita masih merasa di woksit; yaitu BISA menulis ekspresi langsung
(asal diberi tanda = di depannya)
karena di woksit, ekspresi kita langsung di masukkan kedalam CELL dimana
ekspresi (formula) dituliskan
di VBA, tempat kita menulis BUKANLAH CELL(yg juga sebetulnya variable
memory) tetepi di lembaran Module Code
maka di VBA kita harus menulis lengkap seperti ini
VARIABLE = Ekspresi
BlaBlaBla = WorksheetFunction.Countif(WS.Range("LiburNas"),Date)
atau :
Ekspresi ditulis dalam kalimat. Dimana kalimat itu dpt menyimpulkan HASIL
EKSPRESI
misal
If Ekspresi = [Suatu Nilai] Then
MsgBox Ekspresi
ini pun kayaknya terbatas jika Ekspresi menghasilkan DATA bukan OBJECT
Jika ekspresi masih menghasilkan OBJECT (misal Range/Cell), maka
agar Ekspresi dapat dievaluasi, harus kita tentukan salah satu Propertynya
Misal Ekspresi menghasilkan Range A3:A10
MsgBox Ekspresi
akan menimbulkan kesalahan, karena kita minta sebuah pesan text yg isinya
OBJECT yg lebih dari 1 cell
dimana object tidak dapat disimpulkan dalam 1 DATA
( jika object Range hanya berisi 1 cell, maka kita masih ditolong oleh VBA,
karena 1 OBJECT Range Tunggal
jika ditulis tanpa property, VBA akan menganggap Property Defaultnya / yaitu
Value)
harusnya
MsgBox Ekspresi(1,1).Value
atau mungkin
MsgBox WorksheetFunction.SUM(Ekspresi)
catatan
1. untuk mengetahui fungsi apa saja yg ada di VBA (selain melalui object
browser)
di module ketikkan VBA. (vba titik)
maka di sebelah kanannya akan muncul autolist: berupa semua member vba
termasuk fungsi-fungsi
2. untuk mengetahui fungsi milik excel (woksit) APA SAJA yg dapat di pinjam
di VBA
(ya masuk help dong..) lalu cari dgn katakunci worksheetfunction,
kalau sbar pasti ketemu daftar fungsi woksit yg bisa di-Fake di VBA berikut
penjelasannya
rgds,
siti
(sering "ndak sopan"), maafken...
2008/7/17 Kusnadi Dian <[EMAIL PROTECTED]>:
> Pak A.Zamroni telah kasih satu contoh formula.... terimakasih
> yang saya inginkan gimana kalo pake-VBA ?
> saya telah coba di file pertanyaan itu pake vba, tapi sepertinya
> terlalu awam atau kalo menurut istilah mbak Siti & mbak SAI itu vba masih
> kurang sopan. Adakah coding vba yang lebih sopan ? ( pastinya adalah yau )
> regards,
>
>
> ..::kusnadi::..
> www.cepak05.blogspot.com
> www.kopkarlamina.blogspot.com
> www.nilawood.co.id
>