Mengapa saya tidak bisa menggunakan nomor wildcard di Cells.Find di VBA?

3

Saya mencoba mencari lembar kerja Excel saya untuk setiap sel yang memiliki nilai yang dimulai dengan angka yang diikuti oleh titik, tetapi ini tidak berfungsi. Adakah yang tahu mengapa tidak?

Cells.Find(What:="[0-9].", After:=ActiveCell, LookIn:=xlFormulas, _
    LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
    MatchCase:=False, SearchFormat:=False).Select
Powaya
sumber

Jawaban:

1

Saya mencoba mencari lembar kerja Excel saya untuk setiap sel yang memiliki nilai yang dimulai dengan angka yang diikuti oleh titik tetapi ini tidak berfungsi.

Adakah yang tahu mengapa tidak?

Suatu periode .memiliki arti khusus dalam ekspresi reguler, itu berarti "Mencocokkan setiap karakter tunggal".

Jika Anda ingin mencocokkan periode literal, .Anda perlu melepaskan diri dari makna khusus. \digunakan sebagai karakter pelarian (misalnya "\.", "\\").

Jadi ekspresi Anda harus "[0-9]\."sesuai dengan periode literal ..

Untuk mencocokkan lebih dari satu digit diikuti dengan periode digunakan "[0-9]+\."( +digunakan untuk mencocokkan ekspresi sebelumnya satu atau lebih kali).

Lihat VBA RegEx: Cara Mengevaluasi dan Menggunakan "Ekspresi Reguler" untuk informasi lebih lanjut.

Catatan: Sejauh yang saya ketahui cells.find()tidak mendukung ekspresi reguler.

Anda harus menggunakan RegExpkelas.

Regular Expressions (RegExp) adalah kelas yang menawarkan kemampuan parsing teks yang sangat kuat, khususnya memungkinkan pengguna menemukan (dan bahkan mengganti) substring dalam entri teks yang lebih besar yang sesuai dengan pola tertentu. Artikel ini menyediakan informasi dasar tentang implementasi VBScript dari RegExp, dan bagaimana Anda dapat menggunakannya untuk mendapatkan kemampuan penguraian teks yang kuat dalam proyek Visual Basic 6 (VB6) dan Visual Basic for Applications (VBA). Dengan sedikit pengetahuan tentang aturan dan beberapa imajinasi, Anda dapat membangun pola yang sangat fleksibel dan / atau rumit.

...

Dengan menambahkan fungsi-fungsi ini ke proyek VB6 / VBA Anda, Anda dapat dengan cepat dan mudah menggabungkan fungsionalitas RegExp ke dalam aplikasi Anda. Jika Anda adalah pengguna Microsoft Office, Anda bahkan dapat menggunakan fungsi ini dalam rumus lembar kerja untuk Microsoft Excel atau dalam kueri di Microsoft Access.

Sumber Menggunakan Ekspresi Reguler di Visual Basic untuk Aplikasi dan Visual Basic 6 untuk informasi lebih lanjut.

DavidPostill
sumber