ฟังก์ชัน InStr

นำไปใช้กับ
Access for Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

ส่งกลับ ตัวแปร (ยาว) ที่ระบุตำแหน่งของการปรากฎครั้งแรกของสตริงหนึ่งภายในสตริงอื่น

ดูตัวอย่าง

ไวยากรณ์

InStr([start, ]สตริง 1, สตริง 2 [, เปรียบเทียบ ] )

ไวยากรณ์ของฟังก์ชัน InStr มีอาร์กิวเมนต์ดังนี้

อาร์กิวเมนต์ คำอธิบาย
เริ่ม ไม่จำเป็น นิพจน์ตัวเลขที่กําหนดตําแหน่งเริ่มต้นสําหรับการค้นหาแต่ละรายการ ถ้าละไว้ การค้นหาจะเริ่มต้นที่ตําแหน่งอักขระแรก ถ้า เมนูเริ่มต้นมีค่า เป็น Null จะเกิดข้อผิดพลาด จําเป็นต้องมีอาร์กิวเมนต์ start ถ้าระบุ Compare
สตริง 1 จำเป็น นิพจน์สตริงที่กําลังค้นหา
สตริง 2 จำเป็น นิพจน์สตริงค้นหา
เปรียบเทียบ ไม่จำเป็น ระบุชนิดของการเปรียบเทียบสตริง ถ้า compare เป็น Null จะเกิดข้อผิดพลาด ถ้าละการ เปรียบเทียบไว้ การตั้งค่า OptionCompare จะกําหนดชนิดของการเปรียบเทียบ ระบุ LCID (LocaleID) ที่ถูกต้องเพื่อใช้กฎเฉพาะตําแหน่งกระทําการในการเปรียบเทียบ

เคล็ดลับ

ตัวสร้างนิพจน์มี IntelliSense ดังนั้น คุณจึงสามารถดูสิ่งที่อาร์กิวเมนต์ของคุณต้องการได้

การตั้งค่า

การตั้งค่า อาร์กิ วเมนต์เปรียบเทียบ คือ

ค่าคงที่ ค่า คำอธิบาย
vbUseCompareOption -1 ดําเนินการเปรียบเทียบโดยใช้การตั้งค่าของคําสั่ง Option Compare
vbBinaryCompare 0 ดําเนินการเปรียบเทียบไบนารี
vbTextCompare 1 ดําเนินการเปรียบเทียบข้อความ

ค่าที่ส่งกลับ

If InStr ส่งกลับค่า
สตริง 1 มีความยาวเป็นศูนย์ 0
สตริง 1 เป็น Null Null
สตริง 2 มีความยาวเป็นศูนย์ เริ่มต้น
สตริง 2 เป็น Null Null
ไม่พบสตริง 2 0
สตริง 2 พบภายในสตริง 1 ตําแหน่งที่พบการตรงกัน
สตริงเริ่มต้น > 2 0

ข้อสังเกต

ฟังก์ชัน InStrB จะใช้กับข้อมูลไบต์ที่อยู่ในสตริง แทนที่จะส่งกลับตําแหน่งอักขระของการปรากฏครั้งแรกของสตริงหนึ่งภายในสตริงอื่น InStrB จะส่งกลับตําแหน่งไบต์

ตัวอย่าง

การใช้ฟังก์ชัน InStr ในนิพจน์ คุณสามารถใช้ InStr ได้ทุกที่ที่คุณสามารถใช้นิพจน์ ตัวอย่างเช่น ถ้าคุณต้องการค้นหาตําแหน่งของจุดแรก (.) ในเขตข้อมูลที่มีที่อยู่ IP (ชื่อ IPAddress) คุณสามารถใช้ InStr เพื่อค้นหาจุดดังกล่าวได้ ดังนี้:

InStr(1,[IPAddress],".")

ฟังก์ชัน InStr จะตรวจสอบแต่ละค่าในเขตข้อมูล IPAddress และส่งกลับตําแหน่งของคาบเวลาแรก ดังนั้น ถ้าส่วนแรกของที่อยู่ IP คือ 10 ฟังก์ชันจะส่งกลับค่า 3

จากนั้นคุณสามารถใช้ฟังก์ชันอื่นๆ ที่ทํางานบนผลลัพธ์ของฟังก์ชัน InStr เพื่อแยกส่วนของที่อยู่ IP ที่อยู่ก่อนหน้าช่วงเวลาแรก ดังนี้:

Left([IPAddress],(InStr(1,[IPAddress],".")-1))

ในตัวอย่างนี้ InStr(1,[IPAddress],".") ส่งกลับตําแหน่งของคาบเวลาแรก การลบ 1 จะระบุจํานวนอักขระก่อนจุดแรก ในกรณีนี้คือ 2 จากนั้นฟังก์ชัน Left จะแยกอักขระจํานวนมากนั้นออกจากส่วนด้านซ้ายของเขตข้อมูล IPAddress แล้วส่งกลับค่า 10

ใช้ InStr ในโค้ด VBA 

หมายเหตุ

ตัวอย่างต่อไปนี้จะสาธิตการใช้ฟังก์ชันนี้ในโมดูล Visual Basic for Applications (VBA)

ตัวอย่างนี้จะใช้ฟังก์ชัน InStr เพื่อส่งกลับตําแหน่งของการปรากฎครั้งแรกของสตริงหนึ่งภายในสตริงอื่น


Dim SearchString, SearchChar, MyPos
SearchString ="XXpXXpXXPXXP"    ' String to search in.
SearchChar = "P"    ' Search for "P".
' A textual comparison starting at position 4. Returns 6.
MyPos = Instr(4, SearchString, SearchChar, 1)    
' A binary comparison starting at position 1. Returns 9.
MyPos = Instr(1, SearchString, SearchChar, 0)
' Comparison is binary by default
' (last argument is omitted).
MyPos = Instr(SearchString, SearchChar)    ' Returns 9.
MyPos = Instr(1, SearchString, "W")    ' Returns 0.

ดูเพิ่มเติม

ฟังก์ชันสตริงและวิธีใช้