thongkorn โพสต์ 2018-5-28 13:51:58

[VB6] การนับจำนวนคำที่ต้องการ ด้วยการประยุกต์ใช้งานคำสั่งภายใน InStr (In String)

ฟังค์ชั่น หรือคำสั่งภายใน Instr มีประโยชน์เอาไว้สำหรับการค้นหาคำที่ต้องการ หากมันค้นหาเจอ ก็จะคืนค่าตำแหน่งแรก ซึ่งเป็นเลขจำนวนเต็มที่เจอกลับไป แต่หากไม่ใช่ก็จะคืนค่ากลับเป็น 0 เมื่อเรารู้หลักการนี้ ก็นำมาประยุกต์ใช้ในการนับจำนวนคำได้นั่นเอง ...


Option Explicit

Private Sub Form_Load()
    MsgBox InStrCount("ABCDABEDAASBAABC", "AB")
    'MsgBox InStrCount("", "AB")
    End
End Sub

'// ฟังค์ชั่นการนับคำ ด้วยการประยุกต์คำสั่ง InStr
Public Function InStrCount( _
    String1 As String, _
    String2 As String, _
    Optional ByVal Pos As Long = 1, _
    Optional Compare As VbCompareMethod = vbBinaryCompare _
    ) As Long

    Dim LenString As Long
    LenString = Len(String2)
   
    '// ความยาวของ String ที่นำมาเปรียบเทียบ ต้องไม่เท่ากับหรือน้อยกว่า 0
    If LenString Then
      '// Trap Error ค่าที่น้อยกว่า 1 (ก็คือค่า 0 นั่นแหละ) ก็กำหนดค่าให้เป็น 1
      If Pos < 1 Then Pos = 1
      '//
      Do
            '// ค้นหาคำด้วยฟังค์ชั่น InStr (In String) หากเจอก็จะคืนค่าตำแหน่งแรกที่เจอ หากไม่ใช่จะคืนค่ากลับเป็น 0
            Pos = InStr(Pos, String1, String2, Compare)
            '// ใช้ตัวแปร Pos เป็นเงื่อนไข หากมีค่าไม่เท่ากับหรือน้อยกว่า 0 ก็ให้นับจำนวนเพิ่มขึ้น 1
            If Pos Then
                '// นับจำนวนครั้งที่ค้นหาเจอ
                InStrCount = InStrCount + 1
                '// เลื่อนตำแหน่งใหม่ โดยคิดจากตำแหน่งที่เจอ + ความยาวของคำค้นหา
                Pos = Pos + LenString
            Else
                Exit Function
            End If
      Loop
    End If

End Function

หน้า: [1]
ดูในรูปแบบกติ: [VB6] การนับจำนวนคำที่ต้องการ ด้วยการประยุกต์ใช้งานคำสั่งภายใน InStr (In String)