Wa'alaikumussalam Wr. Wb.
Proses memindah data dari tempat A ke tempat B adalah proses :
1. menyalin data dari tempat A
2. menghapus data dari tempat A
3. menulis data ke tempat B
Pada script :
Sub Pindahan()
Dim nama, alamat As String
Dim BarisTerakhir, BarisTujuan As Integer
With Worksheets("Sheet Asal")
nama = .Cells(2, 2).Value
alamat = .Cells(3, 2).Value
End With
With Worksheets("Sheet Tujuan")
BarisTerakhir = .Cells(.Rows.Count, 1).End(xlUp).Row
BarisTujuan = BarisTerakhir + 1
.Cells(BarisTujuan, 1).Value = nama
.Cells(BarisTujuan, 2).Value = alamat
End With
End Sub
1. Proses menyalin dari tempat A dilakukan oleh blok :
With Worksheets("Sheet Asal")
nama = .Cells(2, 2).Value
alamat = .Cells(3, 2).Value
End With
2. Proses menghapus data dari tempat A *belum ada*, dan bisa dibuat dalam
blok :
With Worksheets("Sheet Asal")
.Cells(2, 2).clearcontents
.Cells(3, 2).clearcontents
End With
3. Proses menulis data ke tempat B
With Worksheets("Sheet Tujuan")
BarisTerakhir = .Cells(.Rows.Count, 1).End(xlUp).Row
BarisTujuan = BarisTerakhir + 1
.Cells(BarisTujuan, 1).Value = nama
.Cells(BarisTujuan, 2).Value = alamat
End With
Karena proses 1 dan 2 bekerja pada tempat yang sama, maka bisa digabung
bloknya menjadi :
With Worksheets("Sheet Asal")
nama = .Cells(2, 2).Value
alamat = .Cells(3, 2).Value
.Cells(2, 2).clearcontents
.Cells(3, 2).clearcontents
End With
Bunyi .Cells(2, 2) dan .Cells(3, 2) adalah rujukan ke range B2:B3, maka
baris-baris :
.Cells(2, 2).clearcontents
.Cells(3, 2).clearcontents
juga bisa diganti menjadi :
*.range("b2:b3").clearcontents*
dan blok bisa juga ditulis :
With Worksheets("Sheet Asal")
nama = .Cells(2, 2).Value
alamat = .Cells(3, 2).Value
* .range("b2:b3").clearcontents*
End With
Kemudian, tentang *deklarasi variabel*.
Yang perlu diketahui bahwa deklarasi berbunyi :
Dim nama, alamat As String
Cara deklarasi seperti demikian biasanya dianggap memiliki bahasa manusia
untuk memesan memori bagi variabel nama dan variabel alamat dengan tipedata
yang sama yaitu string. Padahal, bunyi baris deklarasi tersebut akan
menghasilkan variabel :
nama bertipe *Variant*
alamat bertipe String
Untuk memenuhi kesesuaian dengan bahasa manusia yang bermaksud memesan
memori untuk variabel nama dan variabel alamat yang memiliki tipedata yang
sama yaitu String, maka bunyi baris deklarasinya adalah :
Dim nama *as string*, alamat As String
sedang pada deklarasi berbunyi :
Dim BarisTerakhir, BarisTujuan As Integer
juga sama seperti kasus deklarasi diatas dan akan menghasilkan variabel :
BarisTerakhir bertipe *Variant*
BarisTujuan bertipe Integer
Agar semua variabel bertipe Integer, maka deklarasikan dengan :
Dim BarisTerakhir* as interger*, BarisTujuan As Integer
Dengan cara deklarasi seperti yang ada di script asli tetaplah benar dan
script tetap bisa berjalan. Hanya saja variabel bertipe variant membutuhkan
ruang memori lebih besar.
Susunan lengkap script setelah diubah sana-sini menjadi :
Sub Pindahan()
Dim nama *as string*, alamat As String
Dim BarisTerakhir* as interger*, BarisTujuan As Integer
With Worksheets("Sheet Asal")
nama = .Cells(2, 2).Value
alamat = .Cells(3, 2).Value
* .range("b2:b3").clearcontents
* End With
With Worksheets("Sheet Tujuan")
BarisTerakhir = .Cells(.Rows.Count, 1).End(xlUp).Row
BarisTujuan = BarisTerakhir + 1
.Cells(BarisTujuan, 1).Value = nama
.Cells(BarisTujuan, 2).Value = alamat
End With
End Sub
Wassalamu'alaikum Wr. Wb.
Kid.
2013/4/7 Shenly Ruchman <[email protected]>
> **
>
>
> Assalamualaikum..master...
> saya baru bgt ni belajar soal yang namanya macro, kemarin sya buat form
> input sederhana, tapi yang jadi masalahnya ketika sudah saya input data
> dari form tersebt, ko datanya masiha da di formnya ya, yang saya inginkan,
> bagaimana caranya agar data dalam form ketika sudah saya input, maka data
> tersbt langsung hilang,
>
> macronya seperti ini master :
>
>
> Sub Pindahan()
>
> Dim nama, alamat As String
> Dim BarisTerakhir, BarisTujuan As Integer
>
> With Worksheets("Sheet Asal")
> nama = .Cells(2, 2).Value
> alamat = .Cells(3, 2).Value
> End With
>
> With Worksheets("Sheet Tujuan")
> BarisTerakhir = .Cells(.Rows.Count, 1).End(xlUp).Row
> BarisTujuan = BarisTerakhir + 1
> .Cells(BarisTujuan, 1).Value = nama
> .Cells(BarisTujuan, 2).Value = alamat
> End With
>
> End Sub
>
>
>