Fungsi Manipulasi String VBA & Operatorso

โšก Ringkasan Cerdas

Fungsi Manipulasi String VBA dan Operators menggabungkan, mengukur, dan extracHalaman ini menjelaskan operator penggabungan (concatenation), fungsi Left, Right, Mid, Len, dan InStr, pemisahan dan penggabungan, serta kesalahan yang paling sering menyebabkan kode string gagal.

  • ๐Ÿ”ค Data String: Nilai yang dibentuk dari karakter, simbol, dan angka, seperti teks Jul-2015.
  • โž• Rangkaian Operauntuk: Tanda ampersand (&) menghubungkan dua string, jadi โ€œJohn โ€ & โ€œDoeโ€ menghasilkan John Doe.
  • ๏ธ ExtracFungsi-fungsi: Left, Right, dan Mid mengambil substring dari awal, akhir, atau tengah suatu nilai.
  • ๐Ÿ“ Fungsi Pengukuran: Len menghitung jumlah karakter dan InStr mengembalikan posisi di mana sebuah substring dimulai.
  • ๐Ÿงฉ Pisahkan dan Gabungkan: Split memecah satu string yang dipisahkan oleh pembatas menjadi sebuah array, dan Join membangun kembali array tersebut menjadi satu string tunggal.
  • โš ๏ธ Kesalahan Umum: Ketidakcocokan tipe data, fungsi InStr yang mengembalikan nilai nol, dan spasi di akhir baris menyebabkan sebagian besar perbandingan gagal.

Fungsi Manipulasi String VBA dan Operatorso

Rangkaian VBA Operatorso

Data string digunakan untuk menampung data yang terdiri dari angka, karakter, dan simbol. โ€œJul-2015โ€ adalah contoh data string. Itu terbuat dari

  • Karakter (Juli)
  • Simbol (-)
  • Numbers (2015)

Operator string digunakan untuk memanipulasi data string. Misalnya, Anda dapat menggabungkan nilai Juli-2015 dari 3 huruf pertama bulan dan tahun seperti โ€œJul-2015โ€.

Tabel berikut menunjukkan operator penggabungan string VBA.

S / N Operator Deskripsi Example Keluaran
1 & Concatenate: Operator ini digunakan untuk menggabungkan string menjadi satu โ€œJohnโ€ & โ€œDoeโ€ Nama sembarang orang

Sumber Contoh Code

Rangkaian VBA OperaContoh Sumber tors Code

MsgBox "John " & "Doe", vbOKOnly, "Concatenate Operator"

Menjalankan kode di atas menghasilkan hasil berikut

Rangkaian VBA OperaContoh Sumber tors Code

Tanda ampersand bukanlah satu-satunya simbol yang tampaknya menghubungkan teks, dan perbedaan antara keduanya menjadi penting ketika angka terlibat.

Perbedaan Antara & dan + untuk Penggabungan String

VBA menerima baik tanda ampersand (&) maupun tanda plus (+) di antara dua nilai teks, sehingga pemula sering menganggapnya dapat saling menggantikan. Keduanya berperilaku berbeda begitu salah satu operand berupa angka atau nilai kosong, dan hanya salah satunya yang aman.

Perilaku & (Ampersand) + (Ditambah)
Dua nilai teks Bergabung dengan mereka: โ€œGuruโ€ & โ€œ99โ€ kembali Guru99 Bergabung dengan mereka: โ€œGuruโ€ + โ€œ99โ€ kembali Guru99
Teks dan angka Mengubah angka menjadi teks: โ€œUsia โ€ & 30 akan menghasilkan Usia 30 Menimbulkan kesalahan ketidakcocokan tipe data.
Dua rangkaian angka โ€œ10โ€ & โ€œ5โ€ menghasilkan 105 โ€œ10โ€ + โ€œ5โ€ mungkin jika dijumlahkan hasilnya 15
Nilai Null Memperlakukan Null sebagai string kosong Mengembalikan nilai Null dan mengabaikan seluruh hasil.

๐Ÿ’ก Kiat: Selalu gunakan tanda ampersand (&) untuk penggabungan dan simpan tanda plus (+) untuk operasi aritmatika. Beri spasi sebelum dan sesudah tanda ampersand (&), karena penulisan Total& akan dibaca oleh VBA sebagai karakter deklarasi tipe Long.

Fungsi Manipulasi String VBA

Manipulasi String VBA adalah elemen penting dalam Excel VBA untuk pemrograman Makro dan operasi string. Excel menyediakan berbagai jenis fungsi Manipulasi String VBA seperti:

  • kiri: digunakan untuk extract karakter dari sisi kiri string
  • Kanan: digunakan untuk extrackarakter t dari sisi kanan string
  • Menengah: digunakan untuk extracsubstring dari tengah string
  • Len: digunakan untuk mencari panjang suatu string
  • DalamStr: digunakan untuk mencari posisi substring dalam sebuah string
  • MemangkasTanda : digunakan untuk menghapus spasi dari kedua ujung string.
  • menggantikanTanda : digunakan untuk menukar setiap kemunculan satu substring dengan substring lainnya.
  • UCase / LCaseTanda titik dua (:) digunakan untuk mengubah string menjadi huruf besar atau huruf kecil.

Tabel di bawah ini menunjukkan sintaks setiap fungsi beserta contohnya, sehingga Anda dapat langsung menyalin polanya ke dalam makro.

fungsi Sintaksis Example Keluaran
kiri Kiri(string, panjang) Kiri (โ€œJuli-2015โ€, 3) Juli
Kanan Kanan(string, panjang) Kanan (โ€œJuli-2015โ€, 4) 2015
Menengah Tengah(string, awal, panjang) Pertengahan (โ€œJuli-2015โ€, 5, 4) 2015
Len Len(string) Len (โ€œJuli 2015โ€) 8
DalamStr InStr(awal, string, substring) InStr(1, โ€œJuli-2015โ€, โ€œ-โ€œ) 4
Memangkas Potong (tali) Memangkas(" Guru99 โ€œ) Guru99
menggantikan Ganti(string, cari, ganti) Ganti(โ€œJuli-2015โ€, โ€œ-โ€œ, โ€œ/โ€) Juli/2015
UCase UCase(string) UCase(โ€œguru99โ€) GURU99

Makro di bawah ini menggabungkan beberapa fungsi tersebut untuk membangun kembali label tanggal dari bagian-bagiannya.

Sub StringFunctionsDemo()
    Dim Source As String
    Dim MonthPart As String
    Dim YearPart As String

    Source = "July-2015"

    ' Take the first three characters
    MonthPart = Left(Source, 3)
    ' Take the last four characters
    YearPart = Right(Source, 4)

    MsgBox MonthPart & "-" & YearPart, vbOKOnly, "String Functions"
End Sub

Menjalankan makro akan menampilkan Jul-2015. Setiap fungsi mengembalikan nilai baru dan membiarkan string asli tidak berubah, itulah sebabnya hasilnya dapat digabungkan dengan aman dalam satu ekspresi.

Semua fungsi ini hanya bekerja pada satu string dalam satu waktu. Ketika satu nilai berisi seluruh daftar, dua fungsi lain menanganinya dengan lebih baik.

Cara Memisahkan dan Menggabungkan String di VBA

Data yang disalin ke Excel sering kali berupa satu nilai panjang dengan pemisah di antara setiap item, seperti โ€œPepsi,Coke,Fanta,Juiceโ€. Membacanya dengan Mid dan InStr lambat dan tidak stabil. VBA menyediakan sepasang fungsi yang cocok untuk pekerjaan ini.

Split Fungsi ini menerima string yang dipisahkan oleh pembatas dan mengembalikan array berbasis nol, dengan satu elemen per item. Ikuti seminar Fungsi ini melakukan kebalikannya, mengambil sebuah array dan mengembalikan sebuah string tunggal dengan pemisah di antara elemen-elemennya. Perhatikan bahwa fungsi Join bekerja pada sebuah array, bukan pada dua string terpisah.

Sub SplitAndJoinDemo()
    Dim Source As String
    Dim Items() As String
    Dim i As Long

    Source = "Pepsi,Coke,Fanta,Juice"

    ' Break the value into an array on every comma
    Items = Split(Source, ",")

    For i = LBound(Items) To UBound(Items)
        Sheet1.Cells(i + 1, 1).Value = Items(i)
    Next i

    ' Rebuild the list with a different separator
    MsgBox Join(Items, " | "), vbOKOnly, "Joined List"
End Sub

Perulangan tersebut menulis setiap minuman ke dalam baris lembar kerja masing-masing, dan kotak pesan kemudian menampilkan Pepsi | Coke | Fanta | Jus. Tiga poin membuat pola ini dapat diandalkan dalam kode produksi:

  • Hasil berbasis nol: Fungsi Split selalu mengembalikan array yang diberi nomor mulai dari 0, apa pun nilai Option Base yang ditetapkan, jadi jalankan loop dengan LBound dan UBound, bukan dengan angka tetap.
  • Deklarasikan sebagai String(): Tetapkan hasilnya ke dalam array String dinamis. Mendeklarasikan ukuran tetap terlebih dahulu akan menyebabkan kesalahan kompilasi.
  • Input kosong: Memisahkan string kosong akan menghasilkan array tanpa elemen, jadi ujilah dengan UBound sebelum membaca Items(0).

Bahkan dengan fungsi yang tepat yang dipilih, kode string akan gagal dalam sejumlah kecil cara yang dapat diprediksi.

Kesalahan Umum pada String VBA dan Cara Memperbaikinya

Sebagian besar kesalahan string dalam Excel VBA berasal dari beberapa penyebab yang singkat. Mengenali gejalanya akan menghemat waktu debugging yang panjang.

  • Ketidaksesuaian tipe pada penggabungan: Tanda plus (+) digunakan di antara teks dan angka. Ganti dengan tanda ampersand (&), yang akan mengubah angka secara otomatis.
  • InStr mengembalikan 0: Substring tidak ditemukan. InStr mengembalikan 0, bukan -1, jika gagal, jadi uji nilai yang lebih besar dari nol sebelum meneruskan hasilnya ke Mid.
  • Panggilan prosedur tidak valid di Tengah atau Kiri: Panjang yang diminta bernilai negatif, atau posisi awal berada di bawah 1. Lindungi panggilan dengan Len agar panjangnya tidak pernah melebihi string.
  • Perbandingan yang seharusnya cocok tetapi tidak cocok: Spasi tambahan dari data yang diimpor akan merusak kesamaan. Bungkus kedua sisi dengan Trim, dan gunakan StrComp jika perbedaan huruf besar dan kecil harus diabaikan.
  • Teks yang tidak akan menjadi angka: Nilai seperti โ€œ1,200โ€ gagal dalam perhitungan aritmatika karena adanya pemisah. Hilangkan pemisah tersebut dengan fungsi Replace sebelum mengonversinya dengan CLng.

Unduh Excel yang berisi kode di atas

Unduh file Excel di atas. Code

Pertanyaan Umum Demo Slot

String dengan panjang variabel dapat menampung hingga sekitar dua miliar karakter, dan String dengan panjang tetap dapat menampung hingga 65,400 karakter. Namun, sebuah sel lembar kerja hanya menyimpan 32,767 karakter, sehingga nilai yang lebih panjang akan dipotong saat ditulis ke lembar kerja.

Secara default, tanda sama dengan membandingkan teks dengan mempertimbangkan huruf besar dan kecil. Gunakan StrComp(a, b, vbTextCompare) untuk hasil yang tidak mempertimbangkan huruf besar dan kecil, atau letakkan Option Compare Text di bagian atas modul untuk mengubah pengaturan default untuk seluruh modul.

Tanda ampersand (&) mengubah setiap operan menjadi teks sebelum digabungkan, jadi 10 & 5 menghasilkan string 105. Pertahankan nilai numerik dan jumlahkan terlebih dahulu, kemudian gabungkan hasilnya jika perlu muncul di dalam pesan.

Ya. Jelaskan input dan output yang diinginkan, misalnya contohnyatracPeriksa kode sebelum tanda hubung pertama, dan asisten AI akan mengembalikan ekspresi Left dan InStr. Uji ekspresi tersebut terhadap kasus-kasus khusus seperti tanda hubung yang hilang.

Ya. Tempelkan ekspresi bersarang seperti Mid dengan InStr di dalamnya dan asisten AI akan memecahnya menjadi beberapa langkah, menyebutkan setiap argumen, dan menandai kasus di mana InStr mengembalikan nol dan panggilan gagal.

Ringkaslah postingan ini dengan: