Tanya VBA untuk border otomatis

  1. 3 bulan yang lalu

    Ingin tanya dan mohon bantuannya.

    Apa macronya jika saya ingin membuat, misal cell A2 hingga O2 muncul border nya secara otomatis, namun dengan syarat cell O1 harus diisi dahulu dengan data (angka, karakter, huruf). Hal ini berulang terus untuk row2 berikutnya atau dengan kata lain cell A(n) hingga O(n) memiliki border otomatis setelah cell O(n-1) terisi.

    Mohon bantuannya.
    Terima kasih

  2. manweljs_

    Agu 7 Terverifikasi + 5.718 Poin
    Di sunting 3 bulan yang lalu oleh manweljs_

    @Anton Indra

    coba :

    Sub Tes()
    Dim rng As Range, sel As Range
    
    Set rng = Range("O1:O" & Range("A" & Rows.Count).End(xlUp).Row)
    For Each sel In rng
        If sel <> "" Then
        Range("A" & sel.Row + 1, "O" & sel.Row + 1).Borders.LineStyle = xlContinuous
        End If
    Next
    End Sub

    atau kalau mau lebih "otomatis" maka pada Event Worksheet_Change :

    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim rng As Range
    
    Set rng = Range("O1:O" & Range("A" & Rows.Count).End(xlUp).Row)
    If Not Intersect(Target, Range("O1:O" & Range("A" & Rows.Count).End(xlUp).Row)) Is Nothing Then
        For Each Target In rng
            If Target <> "" Then
            Range("A" & Target.Row + 1, "O" & Target.Row + 1).Borders.LineStyle = xlContinuous
            End If
        Next
    End If
    End Sub

  3. Terimakasih jawabannya. Saya coba dulu.

  4. Oya mas bro, maaf sebelumnya, karena saya newbie banget. Kalo untuk jawabn pertama sudah berhasil, namun untuk jawaban kedua saya masih bingung utnuk menempatkan private sub dan cara memanggilnya, apakah ditempatkan di module juga atau di "this workbook" atau dimana? Saya masih bingung.
    Mohon bantuannya.
    Terima kasih

  5. Caton

    Agu 7 Terverifikasi Indonesia + 12.523 Poin

    Saya bantu jawab ya mas @manweljs_ ...

    Untuk prosedur Worksheet_Change itu merupakan Event Procedure untuk Wotksheet Object. Jadi kalau yang akan diproses ada pada Sheet1, maka script tersebut dimasukkan (paste saja) ke dalam modul Sheet1... Coba mas @Anton Indra lihat gambar berikut:

    -image-

    -image-

    Pilih dahulu modul Sheet (Worksheet) Object yang akan dibuka (klik ganda). Kalau blok prosedur Worksheet_Change tidak muncul, ikuti proses gambar kedua (Add Event Procedure).

    Demikian.

  6. manweljs_

    Agu 7 Terverifikasi + 5.718 Poin
    Di sunting 3 bulan yang lalu oleh manweljs_

    @Caton

    Saya bantu jawab ya mas...

    memang itu yg saya harapkan mas, soal chit-chat saya serahkan sepenuhnya sama mas @Caton :D ;)

  7. Terimakasih para Suhu untuk jawabannya.
    Untuk private sub apakah akan otomatis run jika misal saya punya button untuk refresh data yg saya assign ke suatu sub procedure (karena ada beberapa rumus yg dipakai oleh semua worksheet)? Atau harus ada coding untuk memanggil private sub tersebut yg harus saya buat di module?
    Terima kasih.

  8. Para Suhu, Alhamdulillah akhirnya bisa, saya gunakan coding yang kedua (yang otomatis, menggunakan private sub), namun pada awalnya, hasilnya hanya satu row saja yang muncul bordernya jika kolom "O" diisi.
    Saya coba modifikasi codingnya jadi :

    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim rng As Range

    Set rng = Range("B1:B" & Range("A" & Rows.Count).End(xlDown).Row)
    If Not Intersect(Target, Range("B1:B" & Range("A" & Rows.Count).End(xlDown).Row)) Is Nothing Then
    For Each Target In rng
    If Target <> "" Then
    Range("A" & Target.Row + 1, "B" & Target.Row + 1).Borders.LineStyle = xlContinuous
    End If
    Next
    End If
    End Sub

    Terima kasih para Suhu.
    Mohon maaf juga jika mungkin kedepannya akan banyak pertanyaan dari saya. :)

  9. manweljs_

    Agu 8 Terverifikasi + 5.718 Poin

    @Anton Indra

    tidak perlu minta maaf, ini kan forum diskusi excel, jadi kalo ada pertanyaan silahkan ditanyakan sj. nanti akan dicarikan solusinya oleh mas @Caton ;)

    lagi pula, ada juga member disini yang pertanyaannya di"ada-adain" misalnya saya.. hahaha ... :D (^_^)/

  10. Siap mas. Makasih

 

atau Mendaftar untuk ikut berdiskusi!