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
>

Kirim email ke