Oh berarti tetap harus berbentuk output sekaligus dan bukan untuk membentuk
sumber data.

1. Coba pelajari loop dengan For Next dan For Each Next
2. Dibutuhkan 2 loop, yaitu :
    >> A. loop terhadap daftar nama di sheet input dengan For Each Next
    >> B. loop terhadap daftar tanggal di sheet input yaitu For Next
3. Loop B ada didalam loop A
     for each variabel_range in range_daftar_nama_input       'ini loop A
              for lDay=0 to 5      'ada 6 hari input  -> loop B
                     'proses ambil nilai disini

                     'cek masuk lalu susun datetime masuk
                     'cek keluar lalu susun datetime keluar

                     'simpan lokasi baris penulisan dengan Find tanggal di
kolom A sheet hasil
                     'simpan lokasi kolom penulisan dengan Find kode di
baris 1 sheet hasil

                     'tulis semua data (1 paket berisi 1 baris x 3 kolom
data)
               next lDay
     next variabel_range

4. dari nama (variabel_range) untuk mendapatkan nilai kolom HH Masuk setiap
day membutuhkan Offset kolom sebanyak lDay*5 + 1
        variabel_range.offset( 0 , lDay*5 + 1 )

    artinya, untuk mendapatkan nilai kolom MM Masuk adalah + 2, HH Keluar
adalah +3 dst sampai keterangan

5. Simpan semua data (dari HH Masuk sampai Ket) kedalam 5 variabel, misal
lHHMasuk,lMMMasuk,lHHKeluar,lMMKeluar,sKet
     seperti :
      lHHMasuk=variabel_range.offset( 0 , lDay*5 + 1 ).value
6. Proses ini diletakkan didalam loop B.
7. usai proses ambil nilai, maka diperlukan cek terhadap data nilai lHH dan
lMM baik masuk atau keluar agar pasti bisa dibentuk menjadi data bertipe
datetime
8. jika hasil cek OK, maka disusunlah data bertipe datetime dan disimpan
dalam variabel tertentu.
    Misal, untuk datetime masuk disimpan di variabel bernama dtMasuk dan
bisa didapat dengan :
      dtMasuk=timevalue( lHHMasuk & ":" & lMMMasuk & ":00" )
9. langkah berikutnya adalah menyimpan nomor baris Excel (Excel Row) lokasi
tanggal input di kolom A sheet hasil dan nomor kolom Excel (Excel Column)
lokasi kode karyawan di baris 1 sheet hasil
10. tulis semua data (dtMasuk,dtKeluar, dan sKet  -> 1 paket data) ke cell
yang diketahui nomor baris Excel dan nomor kolom Excel tersebut.
      Misal untuk Data Masuk (dtMasuk)
           sheets("nama sheet output").cells(  lBarisExcel , lKolomExcel
).value = dtmasuk
      Misal untuk Data Keluar (dtKeluar)
           sheets("nama sheet output").cells(  lBarisExcel ,
lKolomExcel + 1).value = dtmasuk

Selamat mencoba.

Wassalam,
Kid.

2013/3/2 agung aldhino <[email protected]>

> **
>
>
> Terima kasih Mr. Kid
> File yang dikirim sudah saya coba. tapi masih kurang. karena data masih
> bisa double jika kita input lagi data pada tanggal yang sama.
> saya sudah coba membuat dengan macro. tapi masih error, karena menggunakan
> For .... Next.
> sebelumnya tidak menggunakan for...next bisa. tapi kode VBA nya terlalu
> panjang.
> jadi tadinya sengaja ingin menggunakan for....Next untuk membuat kode VBA
> nya lebih simple.
> pada intinya saya ingin membuat kode VBA nya tanpa adanya sheet atau cell
> bantuan.
> hehehehe.... soalnya jika dipikir pakai logika harusnya bisa. cuma sayang
> saya masih belum paham dengan bahasa VBA.
> saya pikir dengan VBA segala hal yang kita pikir mustahil sepertinya bisa
> dilakukan asal kita paham dan punya kemauan untuk berkreasi dengan bahasa
> VBA nya...
> jadi mungkin ada master excel yang bisa membantu permasalahan ini.
>
> Wassalam,
> Agung
>
>   *Dari:* Mr. Kid <[email protected]>
> *Kepada:* [email protected]
> *Dikirim:* Kamis, 28 Februari 2013 18:24
>
> *Judul:* Re: [belajar-excel] Input Data Absensi
> **
>
> Coba file terlampir yang menggunakan tabel bantu penyusun data.
> Susunan sheet data dipilih yang berorientasi vertikal
> Sheet Database Absensi lebih layak disebut salah satu bentuk output yang
> bisa disusun menggunakan formula.
>
> Wassalam,
> Kid.
>
>
>

Kirim email ke