Checkbox VBA Excel

  1. 6 tahun lalu
    Di sunting 6 tahun lalu oleh MUSA

    ass.
    mas @Caton, maaf ini sy mau mnt tolong, bgaimn sih cr mmbuat checkbox dari no.1 smpi no skian dr file yg sy lmpir, mklum mas msih pmula lgian sy bingung asign macro checkbox antara yg satu dg lainnya itu beda dan langkh2 ap sj yg prlu sy lakukan jika ingin mnmbah data kebawah dari kolom data trsebut. terimakasih ....

  2. Caton

    27 Sep 2018 Terverifikasi Indonesia + 20.101 Poin

    @MUSA ... bgaimn sih cr mmbuat checkbox dari no.1 smpi no skian dr file yg sy lmpir ...

    Pada file yang mas lampirkan, lihat script pada modul objek sheet shData (Data). Sudah ada contoh scriptnya. Oleh karena script tersebut diletakkan di dalam prosedur Sub Worksheet_Change, maka setiap ada perubahan pada sel sheet DATA, prosedur tersebut akan dieksekusi.

    Alur prosesnya juga tidak sulit untuk dipahami, berikut saya coba jelaskan beberapa baris script yang memungkinkan objek CheckBox dibuat secara otomatis:

    On Error Resume Next

    Script di atas merupakan Event Flag (penanda kejadian) berupa perangkap kesalahan yang berguna sebagai tanda agar proses tetap melanjutkan eksekusi ke baris script selanjutnya jika terjadi kesalahan proses — sehingga jendela notifikasi kesalahan tidak ditampilkan. Selanjutnya:

    If Not Intersect(Target, [B6:B50]) Is Nothing Then
    ...
    End If

    merupakan script yang merupakan blok kondisi yang akan menguji apakah range atau sel yang berubah (yakni variabel Target) masuk ke dalam range B6:B50 pada sheet yang sama. Jika TRUE, maka script di dalam blok tersebut akan dieksekusi. Selanjutnya, untuk baris berikut:

    x = Target.Row - 5
    If Len(Target) > 0 Then
        shData.Shapes("CB." & x).Visible = True
        If Err <> 0 Then
            shData.CheckBoxes.Add( _
            Left:=Target.Offset(0, 5).Left + 10, _
            Top:=Target.Offset(0, 5).Top, _
            Width:=10, _
            Height:=10).Select
            With Selection
            .Name = "CB." & x
            .Caption = ""
            End With
            Target.Offset(1).Activate
        End If
        Err.Clear
    Else
        shData.Shapes("CB." & x).Visible = False
    End If

    Apabila sel atau range Target ada isinya (tidak kosong), maka proses akan mengubah properti Visible dari Shape Object dengan nama objek dengan prefiks CB. dan sufiks yang diambil dari variabel x. Asumsikan, perubahan terjadi pada kolom B baris ke 20. Maka:

    KARENA:
    x = Target.Row - 5 = 20 - 5 = 15
    MAKA:
    "CB." & x = "CB." & 15 = "CB.15"

    Oleh karena script:

    ...
    shData.Shapes("CB." & x).Visible = True
    ...

    berpotensi menghasilkan kesalahan jika Shape Object dimaksud tidak ada (Nothing), maka dengan adanya Error Event Flag di atas, proses akan melanjutkan eksekusi ke baris berikutnya, yakni menguji apakah terjadi kesalahan:

    ...
    (Err <> 0)
    ...

    Jika tidak terjadi kesalahan, objek Err akan menghasilkan nilai 0 (nol). Nilai tersebut merupakan nilai dari properti default dari objek Err, yakni Err.Number. Disini kuncinya apakah proses akan membuat objek CheckBox atau tidak. Jika Err <> 0, artinya (dengan asumsi di atas), Shape dengan nama CB.15 tidak ada pada sheet DATA. Hasilnya, baris script berikut yang dieksekusi:

    ...
    shData.CheckBoxes.Add( _
      Left:=Target.Offset(0, 5).Left + 10, _
      Top:=Target.Offset(0, 5).Top, _
      Width:=10, _
      Height:=10).Select
    With Selection
      .Name = "CB." & x
      .Caption = ""
    End With
    ...

    Itu baris untuk menambahkan Shape Object berupa CheckBox ke sebuah Worksheet. Logika proses di atas khan sebenarnya tidak sulit dipelajari. Intinya:

    Jika ada perubahan pada kolom B, maka jika sel pada kolom B tersebut ada isinya, maka tampilkan CheckBox pada baris tersebut dengan nama CB & indeks baris dikurangi 5. Jika terjadi kesalahan, maka lanjutkan dengan membuat objek CheckBox yang baru.

    Ya, ± seperti itu ...

    @MUSA ... sy bingung asign macro checkbox antara yg satu dg lainnya itu beda dan langkh2 ap sj yg prlu sy lakukan jika ingin mnmbah data kebawah dari kolom data trsebut ....

    Untuk menentukan (assign) macro terhadap Shape Object pada Worksheet, maka isi properti OnAction dari Shape Object tersebut. Misalkan saja, untuk setiap CheckBox pada sheet DATA, akan ditetapkan ke prosedur Sub CheckBox_OnClick pada sebuah modul standar. Misalkan, untuk menetapkan prosedurnya, saat objek CheckBox ditambahkan:

    ...
    shData.CheckBoxes.Add( _
      Left:=Target.Offset(0, 5).Left + 10, _
      Top:=Target.Offset(0, 5).Top, _
      Width:=10, _
      Height:=10).Select
    With Selection
      .Name = "CB." & x
      .Caption = ""
      .OnAction = "'" & ThisWorkbook.Name & "'!CheckBox_OnClick"
    End With
    ...

    dan pad modul standar,

    Sub CheckBox_OnClick()
      MsgBox "Clicked ... !"
    End Sub

    Untuk memanggil satu prosedur yang sama oleh beberapa Shape Object, maka manfaatkan Application.Caller sebagaimana yang pernah saya berikan contohnya. Bagaimana menyusunnya, coba pelajari dahulu penjelasan saya di atas dan tinjau kembali contoh-contoh yang telah pernah diberikan. Kalau kesulitan, silahkan jelaskan kesulitannya ... ;)

    Btw, dalam minggu ini, saya masih ada pekerjaan yang harus diselesaikan. Jadi (mungkin) saya tidak bisa membalas diskusi yang ada dengan cepat ... Mohon maklum ... :)

    Demikian.

 

atau Mendaftar untuk ikut berdiskusi!