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

Kirim email ke