เครื่องมือแก้ไข Downcodes นำเสนอคำอธิบายโดยละเอียดเกี่ยวกับโค้ดค้นหาชื่อ VBA ครอบคลุมสามวิธี ได้แก่ วิธี Range.Find การข้ามผ่านลูป และฟังก์ชันแบบกำหนดเอง รวมถึงแอปพลิเคชันขั้นสูงและคำถามที่พบบ่อยเพื่อช่วยให้คุณเชี่ยวชาญการค้นหาชื่อ VBA ใน Excel ได้อย่างรวดเร็ว บทความนี้จะแนะนำการใช้งานโค้ด ข้อดีและข้อเสียของแต่ละวิธีโดยละเอียด และมอบโซลูชันที่ครอบคลุมมากขึ้นตามสถานการณ์การใช้งานจริง

หากต้องการเขียนโค้ด VBA สำหรับการค้นหาชื่อ คุณสามารถทำได้หลายวิธี เช่น การใช้ลูป การใช้ฟังก์ชันค้นหาของ Excel หรือใช้ฟังก์ชันแบบกำหนดเองเพื่อค้นหาชื่อเฉพาะ ด้านล่างนี้ เราจะแนะนำรายละเอียดวิธีการใช้เมธอด Range.Find ใน VBA เพื่อเขียนฟังก์ชันคิวรีชื่อ
ใน VBA วิธี Range.Find เป็นเครื่องมือที่มีประสิทธิภาพมากและใช้กันทั่วไปในการค้นหาข้อมูลเฉพาะ ต่อไปนี้เป็นขั้นตอนและตัวอย่างในการเขียนโค้ดการค้นหาชื่อโดยใช้วิธีนี้
ค้นหาย่อยชื่อ()
Dim เป็นแผ่นงาน
Set ws = ThisWorkbook.Sheets(Sheet1) 'สมมติว่ารายชื่ออยู่ใน Sheet1
Dim searchName As String
searchName = Wang Xiaoming'นี่คือชื่อที่เรากำลังมองหา
Dim พบเซลล์เป็นช่วง
ตั้งค่า foundCell = ws.Cells.Find(What:=searchName, LookIn:=xlValues, LookAt:=xlWhole)
หากไม่พบเซลล์ก็ไม่มีอะไรแล้ว
พบชื่อ MsgBox: & searchName & at: & foundCell.Address
อื่น
ไม่พบชื่อ MsgBox: & searchName
สิ้นสุดถ้า
จบหมวดย่อย
ในตัวอย่างนี้ ก่อนอื่นเราตั้งค่าออบเจ็กต์เวิร์กชีตให้ชี้ไปที่เวิร์กชีตที่มีข้อมูลชื่อ searchName คือชื่อที่เราต้องการค้นหา ต่อไปให้ใช้วิธีค้นหา หากพบชื่อที่ต้องการ เราจะแสดงชื่อและตำแหน่งของชื่อนั้นในกล่องข้อความ หากไม่พบ จะมีกล่องข้อความปรากฏขึ้นมาเพื่อแจ้งให้ผู้ใช้ทราบ
หากชื่อที่คุณกำลังมองหากระจัดกระจายอยู่ในพื้นที่ที่ไม่ปกติหรือคุณต้องตรงกับเกณฑ์การค้นหาที่ซับซ้อนมากขึ้น วิธีการสำรวจเซลล์จะมีความยืดหยุ่นมากขึ้น
ย่อย FindNameByLooping()
Dim เป็นแผ่นงาน
Set ws = ThisWorkbook.Sheets(Sheet1) 'สมมติว่ารายชื่ออยู่ใน Sheet1
Dim searchName As String
searchName = Zhang San'นี่คือชื่อที่เรากำลังมองหา
เซลล์สลัวเป็นช่วง
สำหรับแต่ละเซลล์ใน ws.UsedRange
ถ้า cell.Value = searchName จากนั้น
MsgBox พบชื่อ: & searchName & at: & cell.Address
ออกจากย่อย
สิ้นสุดถ้า
เซลล์ถัดไป
ไม่พบชื่อ MsgBox: & searchName
จบหมวดย่อย
ในโค้ดนี้ For Each loop ใช้เพื่อวนซ้ำพื้นที่ที่ใช้ของเวิร์กชีต เมื่อพบชื่อที่ตรงกัน กล่องข้อความจะปรากฏขึ้นเพื่อแสดงชื่อและตำแหน่งของชื่อ จากนั้นใช้ Exit Sub เพื่อออกจากรูทีนย่อย หากไม่พบหลังจากการสำรวจเสร็จสิ้น กล่องข้อความก็จะปรากฏขึ้นเช่นกัน
นอกจากโค้ดด้านบนที่ทำงานโดยตรงในแมโคร VBA แล้ว คุณยังสามารถสร้างฟังก์ชันแบบกำหนดเอง (ฟังก์ชันที่กำหนดโดยผู้ใช้, UDF) ที่ช่วยให้คุณสามารถใช้สูตรในเซลล์ Excel ได้โดยตรงเพื่อดำเนินการคิวรีชื่อ
ฟังก์ชัน FindNameUDF(searchName As String) เป็นสตริง
Dim เป็นแผ่นงาน
Set ws = ThisWorkbook.Sheets(Sheet1) 'สมมติว่ารายชื่ออยู่ใน Sheet1
Dim พบเซลล์เป็นช่วง
ตั้งค่า foundCell = ws.Cells.Find(What:=searchName, LookIn:=xlValues, LookAt:=xlWhole)
หากไม่พบเซลล์ก็ไม่มีอะไรแล้ว
FindNameUDF = ชื่อที่พบ: & searchName & at: & foundCell.Address
อื่น
FindNameUDF = ไม่พบชื่อ: & searchName
สิ้นสุดถ้า
ฟังก์ชันสิ้นสุด
ฟังก์ชันแบบกำหนดเองนี้ FindNameUDF สามารถใช้ในเซลล์ใดก็ได้ ตัวอย่างเช่น หากคุณป้อน =FindNameUDF(李思) ฟังก์ชันนี้จะส่งคืนตำแหน่งของ John หรือข้อมูลที่ไม่พบ
ในการใช้งานจริง คุณอาจต้องจัดการกับสถานการณ์ขั้นสูงบางอย่าง เช่น ความละเอียดอ่อนของตัวพิมพ์ การค้นหาทั่วโลก และปัญหาอื่น ๆ
ย่อย FindAllOccurrences ()
Dim เป็นแผ่นงาน
Set ws = ThisWorkbook.Sheets(Sheet1) 'สมมติว่ารายชื่ออยู่ใน Sheet1
Dim searchName As String
searchName = Wang Xiaoming'นี่คือชื่อที่เรากำลังมองหา
หรี่ลงก่อนพบเป็นสตริง
Dim พบเซลล์เป็นช่วง
ตั้งค่า foundCell = ws.Cells.Find(What:=searchName, LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=True)
หากไม่พบเซลล์ก็ไม่มีอะไรแล้ว
firstFound = foundCell.Address
ทำ
พบชื่อ MsgBox: & searchName & at: & foundCell.Address
ตั้งค่า foundCell = ws.Cells.FindNext(foundCell)
วนซ้ำในขณะที่ไม่พบเซลล์ไม่มีอะไรเลย และพบเซลล์ที่อยู่ <> พบครั้งแรก
อื่น
ไม่พบชื่อ MsgBox: & searchName
สิ้นสุดถ้า
จบหมวดย่อย
ในโค้ดนี้ พารามิเตอร์ MatchCase ถูกตั้งค่าเป็น True เพื่อระบุความละเอียดอ่อนของตัวพิมพ์ หลังจากค้นหาผลลัพธ์แรกแล้ว ให้ใช้เมธอด FindNext เพื่อค้นหารายการที่ตรงกันในภายหลัง และใช้การวนซ้ำ Do Loop เพื่อให้แน่ใจว่าทั้งเวิร์กชีตถูกค้นหาจนกว่าจะกลับสู่ ที่อยู่ของเซลล์แรกที่พบ
ด้วยการรวมการใช้ Range.Find, Loop Traversal และฟังก์ชันแบบกำหนดเองเข้าด้วยกัน คุณสามารถเขียนโค้ดคิวรีชื่อ VBA ที่เหมาะสมได้ตามความต้องการเฉพาะ ข้างต้นเป็นวิธีการต่างๆ ในการใช้ VBA เพื่อสืบค้นโค้ดชื่อ คุณสามารถเลือกวิธีที่เหมาะสมที่สุดตามสถานการณ์จริงของคุณได้
1. จะใช้ VBA เพื่อเขียนโค้ดคิวรีชื่อง่ายๆ ได้อย่างไร
VBA สามารถใช้เขียนแมโคร Excel ที่มีประสิทธิภาพได้ หากต้องการเขียนโค้ดค้นหาชื่อ คุณสามารถทำตามขั้นตอนเหล่านี้:
ขั้นแรก เลือกช่วงใน Excel เพื่อจัดเก็บข้อมูลสำหรับชื่อและข้อมูลที่เกี่ยวข้อง ตัวอย่างเช่น คุณสามารถจัดเก็บชื่อในคอลัมน์ A และข้อมูลอื่นๆ ที่เกี่ยวข้องในคอลัมน์ B จากนั้นกด Alt+F11 ใน Excel เพื่อเปิดตัวแก้ไข VBA ในตัวแก้ไข VBA คุณสามารถสร้างโมดูลใหม่ได้ ในโมดูลใหม่ คุณสามารถเขียนโค้ด VBA เพื่อใช้ฟังก์ชันคิวรีชื่อได้ ตัวอย่างเช่น คุณสามารถใช้ For loop เพื่อวนซ้ำคอลัมน์ชื่อ จากนั้นใช้คำสั่งแบบมีเงื่อนไขเพื่อพิจารณาว่าพบชื่อที่ตรงกันหรือไม่ สุดท้าย คุณสามารถแสดงผลลัพธ์คิวรีในเซลล์อื่นใน Excel หรือใช้ฟังก์ชัน MsgBox เพื่อแสดงเป็นกล่องข้อความป๊อปอัปโดยทำตามขั้นตอนข้างต้น คุณสามารถเขียนโค้ด VBA ง่ายๆ เพื่อใช้ฟังก์ชันคิวรีชื่อได้ โปรดอย่าลืมเปิดใช้งานมาโครเมื่อบันทึกไฟล์ Excel
2. คุณควรคำนึงถึงปัญหาอะไรบ้างเมื่อเขียนโค้ด VBA
เมื่อเขียนโค้ด VBA มีปัญหาบางอย่างที่ต้องให้ความสนใจเพื่อให้แน่ใจว่าโค้ดทำงานอย่างถูกต้องและปรับประสิทธิภาพให้เหมาะสม:
หลีกเลี่ยงการใช้ตัวแปรส่วนกลาง: ตัวแปรส่วนกลางจะมีอยู่ตลอดกระบวนการทั้งหมด ซึ่งใช้หน่วยความจำและส่งผลต่อประสิทธิภาพของโค้ด พยายามจำกัดขอบเขตของตัวแปรให้อยู่ในรูทีนย่อยหรือฟังก์ชันเฉพาะ ใช้ความคิดเห็น: การใช้ความคิดเห็นในโค้ดของคุณจะเพิ่มความสามารถในการอ่านโค้ด และช่วยให้นักพัฒนารายอื่นเข้าใจเจตนาของโค้ดได้ดีขึ้น พยายามเพิ่มความคิดเห็นที่เหมาะสมให้กับแต่ละรูทีนย่อยหรือฟังก์ชัน การจัดการข้อผิดพลาด: การเพิ่มการจัดการข้อผิดพลาดที่เหมาะสมให้กับโค้ดสามารถหลีกเลี่ยงการหยุดชะงักของโค้ดหรือข้อผิดพลาดเนื่องจากสถานการณ์ที่ไม่คาดคิด คุณสามารถใช้คำสั่ง On Error เพื่อตรวจจับและจัดการข้อผิดพลาดรันไทม์ได้ ปรับโค้ดให้เหมาะสม: พยายามใช้เทคนิคการเขียนโค้ดที่มีประสิทธิภาพ เช่น การหลีกเลี่ยงการวนซ้ำและการคำนวณซ้ำ การใช้คำสั่ง Exit For ในลูปสามารถออกจากลูปก่อนเวลาและปรับปรุงประสิทธิภาพการเรียกใช้โค้ด3. จะขยายฟังก์ชันของโค้ดสืบค้นชื่อ VBA ได้อย่างไร?
โค้ด VBA สามารถขยายและปรับแต่งได้อย่างยืดหยุ่นเพื่อตอบสนองความต้องการเฉพาะ หากคุณต้องการขยายฟังก์ชันการทำงานของโค้ดคิวรีชื่อ VBA เพิ่มเติม คุณสามารถพิจารณาวิธีการต่อไปนี้:
เพิ่มเงื่อนไขการสืบค้นเพิ่มเติม: นอกจากชื่อแล้ว คุณยังสามารถเพิ่มเงื่อนไขการสืบค้นอื่น ๆ ในโค้ดได้ เช่น อายุ เพศ ฯลฯ คุณสามารถใช้ตัวดำเนินการเชิงตรรกะ (เช่น And, Or) เพื่อรวมเงื่อนไขการสืบค้นหลายรายการได้ ใช้การสืบค้นแบบคลุมเครือ: หากคุณต้องการอนุญาตให้ผู้ใช้ทำการสืบค้นแบบคลุมเครือ คุณสามารถใช้ตัวดำเนินการ Like ของ VBA ได้ ตัวอย่างเช่น คุณสามารถอนุญาตให้ผู้ใช้ใช้อักขระตัวแทน (เช่น * และ ?) ในข้อความค้นหาเพื่อแสดงการจับคู่ที่ไม่ชัดเจน การโต้ตอบกับฐานข้อมูล: หากปริมาณข้อมูลของคุณมีขนาดใหญ่มาก ให้ลองจัดเก็บข้อมูลในฐานข้อมูลและใช้ VBA เพื่อโต้ตอบกับฐานข้อมูล คุณสามารถใช้ ADO (ActiveX Data Objects) เพื่อเชื่อมต่อและสอบถามฐานข้อมูล สร้างอินเทอร์เฟซผู้ใช้: หากคุณต้องการให้ผู้ใช้สามารถป้อนเงื่อนไขการสืบค้นและดูผลลัพธ์ได้อย่างอิสระ คุณสามารถใช้เครื่องมือสร้างอินเทอร์เฟซผู้ใช้ เช่น UserForm ด้วยการเพิ่มกล่องข้อความและปุ่มลงใน UserForm ผู้ใช้สามารถป้อนเงื่อนไขการสืบค้นและคลิกปุ่มเพื่อดำเนินการสืบค้นข้างต้นเป็นแนวคิดบางประการสำหรับการขยายฟังก์ชันโค้ดคิวรีชื่อ VBA คุณสามารถปรับแต่งและแก้ไขได้ตามความต้องการที่แท้จริง ขอให้โชคดีในการเขียนโค้ด VBA อันทรงพลัง!
ฉันหวังว่าบทความนี้จะช่วยให้คุณเข้าใจและใช้ VBA สำหรับการสืบค้นชื่อได้ดียิ่งขึ้น หากคุณมีคำถามใด ๆ โปรดอย่าลังเลที่จะถาม!