Wa'alaikumussalam wr wb

Hai Satria,

Asumsi : jumlah baris data tidak terlalu banyak dan hanya 1 kolom saja yang
diproses.

Pola :
1. data mulai baris 2, sampai cells kosong pertama setelah data terakhir di
kolom C
2. data berisi blok, dengan identifier adalah cells kosong di kolom C
3. pada cells kosong di kolom C, ditulis running total sampai baris
tersebut. running total di tulis di kolom i
4. salinan running total setiap blok data kolom C juga ditulis di kolom T
mulai baris 3 (mulari range T3). Ketentuannya, nilai yang ditulis adalah
100 + nilai running total
5. bila perlu, beserta nomor urut di kolom S.

Karena baris data tidak banyak, maka diawali dengan mencoba menggunakan
loop for next mulai dari baris 2.
Berdasar definisi kondisi proses di atas, berarti butuh 3 variabel, yaitu :
1. variabel untuk loop baris Excel, misal diberi nama lRDt bertipe Long
2. variabel untuk menyimpan hasil running total, misal diberi nama dblTotal
bertipe double
3. variabel untuk menghitung cacah (counter) blok data (banyaknya cells
penulisan running total), misal lCTotal bertipe Long.

Blok prosedur berisi proses :
-------------------------------
0. deklarasi variabel

2. init nilai awal hasil running total dblTotal dengan 0 dan lCTotal dengan
0
3. blok loop for next menggunakan lRDt, mulai dari 2 sampai nomor baris
cells kosong pertama setelah data terakhir
4. isi blok loop dengan pengkondisian :
    > jika isi cells di baris loop pada kolom C TIDAK kosong, maka lakukan
pengisian dlbTotal, yaitu dblTotal sebelumnya ditambah nilai cells data di
baris yang di-loop
    > selain kondisi di atas (alias kondisi tidak terpenuhi), maka :
           - blok data berakhir, artinya counter blok data (lCTotal) perlu
ditambah 1, yaitu lCTotal sebelumnya ditambah 1
           - di kolom i pada baris yang sedang di-loop, diisi dengan nilai
dblTotal
           - di kolom T, pada baris 2 ditambah nilai lCTotal, diisi nilai
dblTotal yang sudah ditambah 100 (sesuai ketentuan)
           - bila perlu menulis nomor, maka di kolom S, pada baris 2
ditambah nilai lCTotal, diisi nilai lCTotal

----------------------------------

Nomor 1 bisa diisi proses membersihkan hasil yang lama dan menulis kembali
header area penulisan running total
Nomor 5 bisa diisi proses memberi pesan kepada user bahwa proses telah
selesai

-----------------------------------

fyi,
1. Satu cells setelah data terakhir di kolom C bisa diperoleh dengan :
           cells( rows.count , "c" ).end( xlup ).offset( 1 )
    kalau butuh nomor baris cells tersebut, ambil nilai properti row
2. Pemeriksaan sebuah cells *TIDAK *kosong (alias ada isinya) :
           if cells( baris_excel , "kolom Excel" ).value *<>* vbnullstring
then
    *** vbnullstring bisa diganti dengan "", tetapi lebih baik dibiasakan
dengan vbnullstring agar lebih aman ketika nanti mulai terbiasa menggunakan
win API function
3. Pada proses loop, cek kondisi yang lebih sering ditemui lebih dulu
    *** Pada kasus ini, lebih sering ditemui cells TIDAK kosong (alias ada
isinya), maka letakkan di bagian baris kondisi.
         supaya proses hanya cek dengan 1 proses setiap bertemu cells yang
ada isinya [yaitu sebanyak baris yang di-loop], dan 2 proses ketika bertemu
cells kosong [saat akan menulis hasil running total]
    *** kalau kondisi dibalik, yaitu periksa yang kosong (alias tidak ada
isinya), maka akan melakukan 1 proses saat bertemu cells kosong, tapi 2
proses di cells lainnya.
          Banyak beban tambahan yang tidak bermanfaat.

Siapa saja boleh mencoba, sebagai latihan ber-VBA.


Selamat mencoba..


Wassaalmu'alaikum wr wb
Kid




2018-01-11 11:25 GMT+07:00 prasaja_sat...@yahoo.com [belajar-excel] <
belajar-excel@yahoogroups.com>:

>
>
> Asslamu'alaikum Wr.Wb
>
> Selamat pagi para guru,
> Maaf mengganggu jika ada kesempatan dan berkenan melihat kasus saya.
>
> Saya punya macro seperti yg saya lampirkan.
>
> Saya tadinya berniat untuk menyimpan data disebuah variable, lalu saya
> panggil kembali semua variable tersebut.
>
> Yang jadi kenyataan data yang tersimpan dan terpanggil malah data terkahir
> saja.
>
> Sudah saya coba berbagai cara dengan cara dipisah dengan For.. Next.. yang
> dibedakan denga dipisah menjadi 2 sub prosedur tetapi tetap sama. Saya
> masih newbie jadi belum begitu paham penggunaan nya.
>
> Didalam lampiran saya sertakan dua cara yg hasilnya sama saja.
>
> Mungkin ada yang tau bagaimana solusinya.
> Mohon maaf apabila penjelasannya kurang bisa dipahami, untuk lebih jelas
> ada si lampiran.
>
> Terima kasih
>
> Wassalamu'alaikum Wr.Wb
>
>
> 
>
  • [belajar-excel] M... prasaja_sat...@yahoo.com [belajar-excel]
    • Re: [belajar... Nangagus nanga...@gmail.com [belajar-excel]
    • Re: [belajar... 'Mr. Kid' mr.nm...@gmail.com [belajar-excel]
    • Re: [belajar... hendrik karnadi hendrikkarn...@yahoo.com [belajar-excel]
      • Re: [bel... Bayu Prasaja prasaja_sat...@yahoo.com [belajar-excel]

Kirim email ke