Pernyataan With pada VBA Excel: Menulis Kode Lebih Ringkas, Rapi, dan Efisien

 

Pendahuluan

Saat menulis program menggunakan VBA Excel, Anda akan sering bekerja dengan objek seperti Workbook, Worksheet, Range, Chart, maupun objek lainnya. Tidak jarang, sebuah objek yang sama harus diakses berkali-kali untuk mengubah berbagai properti atau menjalankan beberapa metode.

Sebagai contoh, ketika ingin mengubah isi sel, mengatur jenis huruf, warna latar belakang, perataan teks, dan format angka pada satu sel, Anda mungkin akan menuliskan nama objek yang sama berulang kali.

Meskipun kode tersebut tetap dapat dijalankan, penulisannya menjadi lebih panjang, kurang efisien, dan lebih sulit dibaca.

Untuk mengatasi hal tersebut, VBA menyediakan pernyataan ****With, yaitu struktur yang memungkinkan beberapa operasi dilakukan terhadap objek yang sama tanpa perlu menuliskan nama objek secara berulang.


Apa Itu Pernyataan With?

With adalah struktur kontrol yang digunakan untuk melakukan beberapa operasi terhadap satu objek yang sama.

Begitu objek ditentukan pada baris With, seluruh properti maupun metode di dalam blok tersebut cukup diawali dengan tanda titik (.).

Dengan demikian:

  • kode menjadi lebih singkat,

  • lebih mudah dibaca,

  • lebih mudah dipelihara,

  • serta mengurangi kemungkinan kesalahan penulisan nama objek.


Mengapa Menggunakan With?

Bayangkan Anda harus menulis kode berikut.

Range("A1").Value = "Belajar VBA"
Range("A1").Font.Bold = True
Range("A1").Font.Size = 14
Range("A1").Interior.Color = vbYellow
Range("A1").HorizontalAlignment = xlCenter

Objek Range("A1") ditulis sebanyak lima kali.

Menggunakan With, kode tersebut berubah menjadi:

With Range("A1")
    .Value = "Belajar VBA"
    .Font.Bold = True
    .Font.Size = 14
    .Interior.Color = vbYellow
    .HorizontalAlignment = xlCenter
End With

Hasilnya sama, tetapi kode jauh lebih bersih.


Sintaks

Sintaks umum pernyataan With adalah sebagai berikut.

With objek

    .Property = Nilai

    .Method

End With

Penjelasan Sintaks

With

Memulai blok yang akan menggunakan suatu objek.

objek

Objek yang akan diakses, misalnya:

  • Workbook

  • Worksheet

  • Range

  • Cells

  • Chart

  • Shape

  • Font

  • Interior

.Property

Digunakan untuk mengubah atau membaca properti objek.

Contoh:

.Value

.Name

.Bold

.Method

Digunakan untuk menjalankan suatu metode.

Contoh:

.Select

.Clear

.Copy

.Delete

End With

Menutup blok With.


Cara Kerja With

Saat VBA menemukan kode berikut.

With Range("B2")

Maka setiap kode yang diawali tanda titik (.) akan dianggap sebagai bagian dari:

Range("B2")

Misalnya:

.Value

sebenarnya dibaca VBA sebagai:

Range("B2").Value

Sedangkan

.Font.Size

dibaca sebagai

Range("B2").Font.Size

Hal ini berlangsung hingga VBA menemukan:

End With

Contoh Dasar

Contoh 1

Mengubah isi sebuah sel.

Sub ContohWith()

    With Range("A1")

        .Value = "Microsoft Excel"

    End With

End Sub

Contoh 2

Mengubah beberapa properti sekaligus.

Sub FormatJudul()

    With Range("A1")

        .Value = "Laporan Penjualan"

        .Font.Bold = True

        .Font.Size = 16

        .Font.Name = "Calibri"

        .Interior.Color = vbYellow

        .HorizontalAlignment = xlCenter

    End With

End Sub

Output:

  • Isi sel berubah.

  • Huruf menjadi tebal.

  • Ukuran huruf menjadi 16.

  • Warna latar belakang kuning.

  • Posisi teks di tengah.


Menggunakan With pada Worksheet

Selain Range, With juga dapat digunakan pada objek Worksheet.

Sub ContohWorksheet()

    With Worksheets("Data")

        .Range("A1").Value = "Nama"

        .Range("B1").Value = "Alamat"

        .Range("A1:B1").Font.Bold = True

    End With

End Sub

Karena objeknya adalah worksheet Data, seluruh .Range() mengacu pada worksheet tersebut.


Menggunakan With pada Workbook

Sub ContohWorkbook()

    With ActiveWorkbook

        MsgBox .Name

        .Save

    End With

End Sub

Kode tersebut:

  • menampilkan nama workbook,

  • kemudian menyimpan workbook.


Menggunakan With pada Font

Objek Font juga dapat menggunakan With.

Sub FormatFont()

    With Range("A1").Font

        .Name = "Arial"

        .Size = 12

        .Bold = True

        .Italic = True

        .Color = vbBlue

    End With

End Sub

Karena objeknya adalah Font, semua properti mengacu pada pengaturan huruf.


Menggunakan With pada Interior

Sub FormatBackground()

    With Range("A1").Interior

        .Color = vbYellow

        .Pattern = xlSolid

    End With

End Sub

Nested With (With Bersarang)

With dapat digunakan di dalam With.

Sub NestedWith()

    With Worksheets("Data")

        With .Range("A1")

            .Value = "Belajar VBA"

            .Font.Bold = True

            .Interior.Color = vbYellow

        End With

    End With

End Sub

Penjelasan:

Blok pertama mengacu pada worksheet.

Blok kedua mengacu pada sel A1 pada worksheet tersebut.

Nested With sangat berguna ketika bekerja dengan objek bertingkat.


Studi Kasus

Membuat Header Tabel

Misalkan Anda ingin membuat header laporan.

Sub HeaderLaporan()

    With Range("A1:D1")

        .Value = Array("Kode", "Nama", "Jumlah", "Harga")

        .Font.Bold = True

        .Interior.Color = RGB(0, 112, 192)

        .Font.Color = vbWhite

        .HorizontalAlignment = xlCenter

    End With

End Sub

Hasilnya:

  • Header otomatis dibuat.

  • Tulisan tebal.

  • Warna biru.

  • Teks putih.

  • Posisi rata tengah.


Perbandingan Dengan dan Tanpa With

Tanpa With

Range("A1").Font.Bold = True

Range("A1").Font.Size = 14

Range("A1").Interior.Color = vbYellow

Range("A1").HorizontalAlignment = xlCenter

Dengan With

With Range("A1")

    .Font.Bold = True

    .Font.Size = 14

    .Interior.Color = vbYellow

    .HorizontalAlignment = xlCenter

End With

Kode kedua lebih singkat, lebih mudah dibaca, dan lebih mudah dipelihara.


Tips & Best Practice

Gunakan With jika objek digunakan lebih dari satu kali.

Contoh yang tepat:

With Range("A1")

    .Value = "Data"

    .Font.Bold = True

End With

Jangan gunakan With untuk satu operasi saja.

Kurang efektif:

With Range("A1")

    .Value = "Excel"

End With

Lebih sederhana:

Range("A1").Value = "Excel"

Hindari Nested With yang terlalu dalam.

Maksimal dua atau tiga tingkat agar kode tetap mudah dipahami.


Gunakan indentasi.

Indentasi membuat struktur program lebih jelas.


Kesalahan yang Sering Terjadi

Lupa tanda titik (.)

Salah:

With Range("A1")

    Value = "Excel"

End With

Benar:

With Range("A1")

    .Value = "Excel"

End With

Lupa menutup End With

With Range("A1")

    .Value = "Belajar"

Kode tersebut akan menghasilkan kesalahan sintaks karena blok With belum ditutup.


Menggunakan Objek yang Tidak Valid

With Worksheets("DataTidakAda")

    .Range("A1").Value = "Tes"

End With

Apabila worksheet DataTidakAda tidak tersedia, VBA akan menghasilkan Run-time Error.


Ringkasan

Pada artikel ini Anda telah mempelajari bahwa:

  • With digunakan untuk bekerja dengan satu objek yang sama.

  • Semua properti di dalam blok diawali dengan tanda titik (.).

  • With membuat kode lebih ringkas dan mudah dibaca.

  • With dapat digunakan pada Range, Worksheet, Workbook, Font, Interior, dan objek VBA lainnya.

  • Nested With memungkinkan pengelompokan objek bertingkat, tetapi penggunaannya sebaiknya tidak berlebihan.

  • Gunakan With ketika objek digunakan berulang kali dalam satu blok kode.


Latihan

Latihan 1

Buat program yang mengubah sel A1 menjadi:

  • Berisi teks "Belajar VBA Excel"

  • Huruf Bold

  • Ukuran huruf 14

  • Warna latar belakang Kuning

  • Posisi teks Tengah

Gunakan pernyataan With.


Latihan 2

Buat program yang mengatur range A1 menjadi:

  • Font Calibri

  • Ukuran 11

  • Border di semua sisi

  • Horizontal Alignment Center

Gunakan hanya satu blok With.


Latihan 3

Buat program menggunakan Nested With untuk:

  • Mengakses worksheet "Data"

  • Mengatur sel B2

  • Mengisi nilai "Selesai"

  • Memberi warna hijau

  • Huruf berwarna putih


Pembahasan Singkat

Latihan 1

Sub Latihan1()

    With Range("A1")

        .Value = "Belajar VBA Excel"
        .Font.Bold = True
        .Font.Size = 14
        .Interior.Color = vbYellow
        .HorizontalAlignment = xlCenter

    End With

End Sub

Kesimpulan

Pernyataan With merupakan fitur VBA Excel yang digunakan untuk menyederhanakan penulisan kode ketika bekerja dengan objek yang sama secara berulang. Dengan menggunakan With, kode menjadi lebih ringkas, mudah dibaca, dan lebih mudah dipelihara.

Melalui artikel ini, Anda telah mempelajari sintaks, cara kerja, serta berbagai contoh penggunaan With pada objek seperti Range, Worksheet, Workbook, dan Font. Anda juga memahami pentingnya menggunakan With pada kondisi yang tepat serta menghindari kesalahan umum, seperti lupa menambahkan tanda titik (.) atau End With.

Dengan menguasai pernyataan With, Anda dapat menulis kode VBA yang lebih rapi, efisien, dan profesional. Pada artikel berikutnya, kita akan membahas Pernyataan If...Then, yang digunakan untuk menjalankan kode berdasarkan kondisi tertentu.


Hubungi Kami

Kantor Berkreasi
Alamat :
Pens Sky Venture - Sukolilo Surabaya
Karangrejo Tmur 17 Surabaya

Email : kantor.berkreasi@gmail.com
WA : wa.me/6287761589881  
(Support  Mbak Ana)

Tim Pengembang

Dr. Rojabi Azharghany, M.Si, S.Sos
Dr. H. Agus Sulthoni Imami, S.Psi. M.Pd.I.
Ali Ishaq, M.Pd.
Didik Rahwiniyanto, S.Si., M.Pd.
Mujiburrohman, M.Pd.
Mohammad Zikky, S.ST, M.T
Amien sawedi, S.Pd.
Didik P Wicaksono, M.Pd.