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 > > > >