VBA Conditional Formatting

  1. 7 tahun lalu
    Di sunting 7 tahun lalu oleh Peter

    Halo teman2, saya tidak ngerti sama sekali pemakaian VBA. Jadi saya mau minta tolong script vba yang bsa saya copy paste untuk macro di button saya. ada 2 formula, formula pertama saya gunakan untuk kolom tanggal dan kolom faktur dan formula kedua untuk kolom nama. Fungsi kedua formula ini sama saja yaitu dia akan ilangin nama yg sama pada faktur yang sama sehingga cuma ninggalin 1 nama aja pada masing2 faktur. Saya mau pake rumus di masukin ke 1 tombol button aja supaya pas mau nge print laporan sisa di click aja jadi rapi dan tidak pusing saat membaca laporan. oh ia minta tolong sekalian 1 tombol yang ada macro untuk ilangin conditional formattingnya. Sudah Saya lampirkan data saya, supaya bsa lansung liat yang saya maksud di perbedaan sheet SalesData dan contoh sheet SalesData Pake Conditional. Atau bsa liat foto kalau males download hehe. Thank You!

    Nama Sheet: SalesData

    Formula 1: =COUNTIF($E$4:$E4, E4)>1
    Applies To : SalesData!$E$4:$E$49 dan SalesData!$C$4:$C$49
    Border: Tidak ada
    Font : Putih
    Fill: Putih

    Formula 2 : =$E4=$E3
    Applies To: SalesData!$G$4:$G$49
    Border: Tidak ada
    Font: Putih
    Fill: Putih

    Screen Shot 2017-07-21 at 11.43.05 PM.pngScreen Shot 2017-07-21 at 11.47.06 PM.png
    Screen Shot 2017-07-21 at 11.46.56 PM.png

  2. Pengen kode VBA conditional formatting untuk tombol Mode Laporan dan kode remove conditional formatting di Mode Database.

    Screen Shot 2017-07-21 at 11.52.12 PM.png

  3. Caton

    21 Jul 2017 Terverifikasi Indonesia + 20.101 Poin

    Mungkin pak @Petter Jo bisa mencoba kode VBA berikut. Pada VBA Editor, pilih objek Sheet3 (SalesData), kemudian masukkan kode VBA berikut:

    Option Explicit
    
    Private Sub cmdModeDatabase_Click()
        Me.ListObjects(1).DataBodyRange.FormatConditions.Delete
    End Sub
    
    Private Sub cmdModeLaporan_Click()
        Dim CFFormat As FormatCondition
        Dim Tabel As ListObject
        Dim Kolom As Range
        Dim Indeks()
        Dim Idx As Long
        
        Set Tabel = Me.ListObjects(1)
        
        Indeks = Array(2, 4, 5)
        For Idx = 0 To 2
            Set Kolom = Tabel.ListColumns(Indeks(Idx)).DataBodyRange
            With Kolom
                .FormatConditions.Delete
                .FormatConditions.Add Type:=xlExpression, Formula1:="=($E4=$E3)"
                Set CFFormat = .FormatConditions(1)
                CFFormat.Interior.ColorIndex = 2
                CFFormat.Font.ColorIndex = 2
            End With
        Next
    End Sub

    Untuk tombol Mode Laporan saya beri nama cmdModeLaporan dan untuk tombol Mode Database saya beri nama cmdModeDatabase. Disesuaikan saja nama tombol pada sheet SalesData, atau cukup salin saja isi dari masing-masing Event Procedure pada kode di atas. Catatan: kode VBA di atas hanya berlaku pada lingkup Sheet Object saja (lihat notasi Me pada kode tersebut). Jika digunakan pada lingkup Module, modifikasi notasi Me.ListObjects(1) menjadi Sheet.ListObjects(1).

    Btw, kasus Stok Lama dan Baru-nya menarik... ;) Saya masih coba utak-atik. Hanya saja masih terkendala jika hanya mengandalkan built-in formula. Sepertinya lebih baik jika pake macro... :)

  4. Waduh ini saya udah aplikasikan di sheet SalesData trus step selanjutnya apa? oh ia btw saya liat di VBA code nya Pak @Caton belum aplikasikan formula =COUNTIF($E$4:$E4, E4)>1

  5. Caton

    22 Jul 2017 Terverifikasi Indonesia + 20.101 Poin

    Berikut saya lampirkan file contohnya. Dan untuk CF formula yang pake COUNTIF, saya tidak gunakan karena hasil dengan formula =$E4=$E3 pun ternyata sudah sama. Namun jika pengen begitu, pada file terlampir sudah saya buat demikian. Silahkan dicoba pak @Petter Jo... ;)

  6. Caton

    24 Jul 2017 Terverifikasi Indonesia + 20.101 Poin

    Waduh... salah alamat kayaknya. Maaf pak @Peter dan pak @Petter Jo ... salah tujuan,... haha... harusnya kasusnya ini untuk pak @Peter ;) Kesalahan typo.... maaf ya...

 

atau Mendaftar untuk ikut berdiskusi!