pak Harry,
coba tulis code berikut di command botton untuk Save di form Pindah
Private Sub cmdAdd_Click()
' deklarasikan range nama untuk mengurutkan data di sheet 1 setelah
penghapusan data
Dim rgNama As Range
Dim rNama As Range
Dim i As Long
' deklarasi variabel r untuk menyimpan nilai baris sheet1
Dim r As Long
r = Cbonama.ListIndex + 2
' lakukan konfirmasi ulang tentang pemindahan data
' jika user memilih Cancel maka batalkan pemindahan data
If MsgBox("Yakin akan memindahkan data ini?", vbOKCancel, "Konfirmasi
Pindah Data") = vbCancel Then
Exit Sub
End If
' jika user tidak menekan cancel maka berarti proses dilanjutkan
' pindah ke sheet 2
Sheets("Sheet2").Select
' pergi ke header nama / cell b1
Range("b1").Select
' cek apakah baris di bawah header nama kosong atau tidak
If ActiveCell.Offset(1, 0) = "" Then
' jika baris di bawah header nama kosong, maka turun ke baris
tersebut
ActiveCell.Offset(1, 0).Select
' selain itu
Else
' pergi ke baris terakhir yang berisi data
ActiveCell.End(xlDown).Select
' lalu turun 1 bari lagi ke baris yang kosong
ActiveCell.Offset(1, 0).Select
End If
With ActiveCell
' tulis data yang ingin dipindah ke baris tersebut
' sesuai dengan kolom yang dituju
.Value = Cbonama.Value
.Offset(0, 1).Value = txtALAMAT.Text
.Offset(0, 2).Value = txtJURUSAN.Text
.Offset(0, 3).Value = Format(txtTGLDAFTAR.Text, "dd-mm-yyyy")
.Offset(0, 4).Value = Format(txtTGLTES.Text, "dd-mm-yyyy")
.Offset(0, 5).Value = txtPETUGASINPUT.Text
.Offset(0, 6).Value = Format(txtTANGGALINPUT.Text, "dd-mm-yyyy")
.Offset(0, 7).Value = Lbl_User.Caption
.Offset(0, 8).Value = Format(Date, "dd-mm-yyyy")
.Offset(0, 1).Value = 1
End With
' pindah ke sheet1
Sheets("Sheet1").Select
'pergi ke baris yang dipindah
Cells(r, 1).Select
' hapus baris tersebut
Selection.EntireRow.Delete
' urutkan kembali nomor urut data di sheet 1 setelah data dipindah
Range("b1").Select
i = 1
If ActiveCell.Offset(1, 0) <> "" Then
Set rgNama = Range(ActiveCell.Offset(1, 0), ActiveCell.End(xlDown))
For Each rNama In rgNama
rNama.Offset(0, -1).Value = i
i = i + 1
Next rNama
End If
' hapus semua data yang ada di form
Cbonama.Value = ""
txtALAMAT.Text = ""
txtJURUSAN.Text = ""
txtTGLDAFTAR.Text = ""
txtTGLTES.Text = ""
txtPETUGASINPUT.Text = ""
txtTANGGALINPUT.Text = ""
End Sub
untuk para master.. kalo ada yang salah tolong dikoreksi ^_^
wassalam,
-aji mumpung-
Pada 30 September 2012 17:57, Harry <[email protected]> menulis:
> **
>
>
> Dear BeExceller
> Mr. Kid
>
> Pertama saya mengucapkan terima kasih atas berkenan informasinya.
> Dari rumus yang Mr. Kid berikan, sudah saya tuangkan ke User Form. Tapi
> masih terdapat beberapa kesalahan dalam proses edit dan pemindahan data
> dari Sheet1 ke Sheet2.
> Adapun beberapa kesalahan dari rumus yang saya tuangkan ke User Form sudah
> saya tuliskan pada Lampiran yang saya sertakan.
>
> Besar harapan kiranya teman-teman BeExceller atau Mr. Kid dapat membantu
> saya akan hal tersebut.
>
> Terima kasih atas bantuannya.
> Wassalam,
>
> Harry
>
> N/B:
> Jawaban / penjelasan dari Mr. Kid yang No 1, 5 & 6 belum bisa saya
> tuangkan ke User Form karena masih bingung.
>
> ------------------------------
> *Dari:* Kid Mr. <[email protected]>
> *Kepada:* [email protected]
> *Dikirim:* Minggu, 30 September 2012 10:21
>
> *Judul:* Re: [belajar-excel] INPUT, EDIT & PINDAH TABEL
>
>
> Ikutan...
>
> 1. Kolom Nama Tidak Bisa Di Revisi
> >> pada setiap form, buat deklarasi pada level form (bukan dalam setiap
> prosedur)
> private lIdx as long
> >> pada event change combobox tambahkan :
> if namacombonya.listindex<>-1 then
> lidx=namacombonya.listindex
> endif
> >> pada event click tombol save di bagian tulis nama, hapus yang lama dan
> ganti dengan :
> if memmaster.resize(1,1).offset(lidx,1).value <>
> namacombonya.list(lidx) then
>
> memmaster.resize(1,1).offset(lidx,1).value=namacombonya.list(lidx)
> endif
>
> 2. Pada Kolom Nama Baris Paling Bawah, Jika Di Revisi Kolom Jurusan
> Otomatis Mengcopy Pada Kolom Petugas Input
> >> perbaiki di event click tombol save pada bagian dibawah ini, yang benar
> siapa yang harus ambil txtJurusan :
> If MemMaster(r, 4) <> txtJURUSAN Then
> Sheets("sheet1").Cells(r, 4).Value = txtJURUSAN.text
> End If
> If MemMaster(r, 7) <> txtPETUGASINPUT Then
> Sheets("sheet1").Cells(r, 7).Value = txtJURUSAN.text
> End If
> biasakan gunkan propertinya seperti txtJURUSAN.text dan bukan hanya
> txtJURUSAN walau defaultnya memang textbox selalu mengambil properti text.
> hal ini akan memudahkan migrasi dari satu bahasa program ke bahasa
> program lainnya.
>
> 3. Hasil Revisi Sering Nyasar Pada Baris Pertama (Pada Kolom Judul)
> >> karena ada pengubahan text pada combobox, maka nilai r =
> Cbonama.ListIndex + 2 tidak merujuk dengan benar. Oleh sebab itu dibutuhkan
> proses penyimpanan nilai listindex disebuah variabel berlevel module atau
> form seperti di nomor 1 di atas.
>
> 4. Tanggal Revisi Tidak Match Dengan Tanggal Hari Ini (Tidak Update)
> >> isi tanggal revisi dengan nilai tanggal hari ini dengan fungsi *Date*
> alamatrangenya.value=*Date*
> jika ingin hasilnya bertipe teks, lakukan format terhadap *Date* dengan
> fungsi format.
>
> 5. Jika Ada Proses Pemindahan, Data Yang Ada Pada Sheet1 Tidak Otomatis
> Dihapus
> >> setelah salin data ke sheet lokasi pindah, lakukan hapus range dengan
> shift up pada sheet1
> sheet1.range(sekian sampai sekian).delete xlshiftup
> 'sesuaikan rujukan range yang bunyisa sekian sampai sekian agar persis
> sesuai kebutuhan
>
> 6. Jika Ada Proses Pemindahan, Pada Sheet2 Kolom Petugas Input Dan Tanggal
> Input Tidak Terdeteksi
> >> sebelum dipindah ke sheet2, di sheet1 tulis dulu nilainya sesuai
> keinginan pada kolom yang bersesuaian dengan nilai yang paling anda anggap
> tepat. Setelah itu baru lakukan proses penyalinan ke sheet2 dilanjutkan
> proses penghapusan dari sheet1 (proses penghapusan seperti nomor 5)
>
> Wassalam,
> Kid.
>
> 2012/9/30 Harry <[email protected]>
>
> **
>
> Dear BeExceller,
> Bp. Aji Mumpung
>
> Terima kasih atas berkenan rumusnya.
> Rumus yang telah diberikan sudah saya tuangkan dalam User Form yang saya
> maksudkan.
> Tapi dari rumus tersebut masih ada beberapa ERROR sebagaimana terlampir
> file-nya.
>
> Mohon berkenan koreksinya.
>
> Terima kasih,
>
>
> Harry
>
> N/B:
> Pada Sheet1 dan Sheet2 tsb bisa atau tidak saya tambahkan proteksi dengan
> cara Unprotect & Protect...???
> ------------------------------
> *Dari:* aji mumpung <[email protected]>
> *Kepada:* [email protected]
> *Dikirim:* Kamis, 27 September 2012 13:46
>
> *Judul:* Re: [belajar-excel] INPUT, EDIT & PINDAH TABEL
>
>
> Hai pak Harry,
>
> algoritma pemrograman yang telah disampaikan oleh Mr.Kid ---kalo kata pak
> presiden "Sudah Terang Benderang"---, jadi seYogya-nya (gak ada se-Jakarta
> ya) jika script vba tersebut adalah hasil kreasi anda sendiri.. seharusnya
> dengan mudah anda menuangkannya ke dalam user form.. ^_^
>
> kalo untuk saya yang masih pemula sekali, lebih mudah menulis script dari
> awal dibandingkan menelusuri logika pemrograman yang sudah ada.. ---mungkin
> sama dengan tukang bangunan.. dari pada disuruh ngerombak rumah yang sudah
> jadi mendingan milih ngebangun dari awal--- ini hanya pendapat pribadi ya..
> ^_^
>
> tapi...(ada tapinya nih..) saya coba bantu untuk solusi editnya saja ya..
> ^_^
>
> Dim r As Long
>
> ' cek dahulu, apakah data ada yang kosong atau tidak
> ' jika ada yang kosong maka kasih tau usernya buat ngisi yang masih
> kosong
> If txtALAMAT = "" Or txtJURUSAN = "" Or txtTGLDAFTAR = "" Or txtTGLTES
> = "" Or _
> txtLblUser = "" Or txtTGLINPUT = "" Then
> MsgBox "Input dulu yang kosong ya...", vbOKOnly, "Iseng aja luh..
> ^_^"
> Exit Sub
> End If
>
> ' cek lagi apakah ada perubahan data apa nggak, kalo nggak ada
> ' ya ngapain juga nulis data ke database.. cape-capein aja ^_^
> r = Cbonama.ListIndex + 2
> If MemMaster(r, 3) <> txtALAMAT Then
> Sheets("sheet1").Cells(r, 3).Value = txtALAMAT
> End If
> If MemMaster(r, 4) <> txtJURUSAN Then
> Sheets("sheet1").Cells(r, 4).Value = txtJURUSAN
> End If
> If MemMaster(r, 5) <> txtTGLDAFTAR Then
> Sheets("sheet1").Cells(r, 5).Value = txtTGLDAFTAR
> End If
> If MemMaster(r, 6) <> txtTGLTES Then
> Sheets("sheet1").Cells(r, 6).Value = Format(txtTGLTES,
> "dd-mm-yyyy")
> End If
> If MemMaster(r, 7) <> txtLblUser Then
> Sheets("sheet1").Cells(r, 3).Value = txtLblUser
> End If
> If MemMaster(r, 8) <> txtTGLINPUT Then
> Sheets("sheet1").Cells(r, 8).Value = Format(txtTGLINPUT,
> "dd-mm-yyyy")
> End If
>
> Cbonama.Value = ""
> txtALAMAT.Value = ""
> txtJURUSAN.Value = ""
> txtTGLDAFTAR.Value = ""
> txtTGLTES.Value = ""
> txtLblUser.Value = ""
> txtTGLINPUT.Value = ""
>
> script yang buat pindah datanya mana??? ---nanti ya, masih harus nyari
> rumput buat kasih makan kambing dulu, kalo sempet nanti diposting lagi,
> tapi kalo mau coba ikuti logika pemrograman dari Mr. Kid---
>
> lain kali mbok ya'o kalo kasih nama command button jangan cmdAdd semua..
> bingung jadinya @_@
>
> script tersebut ditulis di salah satu command button yang nama-nya sama
> itu lho..
>
> wassalam,
>
> -aji mumpung- (cah angon seko gunung merbabu)
>
> Pada 26 September 2012 16:38, Harry <[email protected]> menulis:
>
> **
>
> Dear Mr. Kid,
>
> Terima kasih atas berkenan reply-nya. Tapi dr info tersebut, saya
> kesulitan dalam menuangkannya dlm User Form yang saya maksudkan.
>
> Mohon berkenan kirimkan contoh User Form-nya seperti yang pernah saya
> lampirkan.
>
> Terima kasih,
>
> Harry
>
>
> ------------------------------
> *Dari:* Kid Mr. <[email protected]>
> *Kepada:* [email protected]
> *Dikirim:* Selasa, 25 September 2012 22:30
>
> *Judul:* Re: [belajar-excel] INPUT, EDIT & PINDAH TABEL
>
>
> Oke.
>
> 1. Untuk Add data sudah bisa ya.
> 2. Untuk menampilkan data yang akan di edit atau akan di-delete sudah bisa
> juga bukan. Yang jelas, dalam proses itu, Anda bisa mendapatkan posisi
> record.
> *Posisi record itu* yang harus Anda ingat terus, yaitu *listindex
> dari combobox + 1*
> 3. Untuk proses edit data, ketika tombol save ditekan, harus ada proses :
> >> 1. vallidasi terhadap isi setiap control dalam form, apakah pantas
> untuk di save atau tidak.
> >> 2. ketika hasil validasi sudah oke dan pantas disimpan, cek setiap
> isi control dalam form dan bandingkan dengan nilai setiap kolom di baris
> record tersebut
> Jika berbeda dengan isi di tabel pada baris record itu,
> salin nilai kolom di record itu ke kolom poin edit record itu juga
> Jika sama, tidak perlu lakukan apapun
> [proses nomor 2 ini adalah pencatatan histori yang Anda
> inginkan, khusus untuk edit data]
> >> 3. lakukan proses penulisan nilai di setiap control dalam form ke
> masing-masing kolom yang bersesuaian pada record itu juga.
> >> 4. proses selesai.
> 4. Untuk proses pindah data, ketika tombol save ditekan :
> (inti proses adalah salin data record itu ke tabel penampung data yang
> dihapus, kemudian hapus data di tabel utama pada record itu)
> >> 1. beri konfirmasi terakhir pad user apakah proses akan dilanjutkan
> Jika ya, maka lanjutkan, jika tidak, maka batalkan proses
> >> 2. salin data dari tabel utama di record itu ke tabel penampung di
> baris baru
> >> 3. hapus data dari tabel utama pada record itu
> contoh untuk hapus data di record ke-3, mulai kolom B
> sebanyak 1 baris x 10 kolom, dan range di shift ke atas
> range("b4").resize(1,10).delete xlshiftup
> sesuaikan rujukan range("b4").resize(1,10) dengan kebutuhan
> yang telah diketahui nomor recordnya dari combobox list index (sudah
> dibahas di atas sana)
> >> 4. proses selesai.
>
> Wassalam,
> Kid.
>
>
>
>
>
>
>
>
>