我一直在努力讓它作業兩天。我試圖在我的作業表中找到一個特定的字串,在那里我有類似的字串(例如:Yellow-Banana-F和Yellow-Banana-WF)。我曾多次嘗試將我的代碼更改為不同的方式(例如Stringvs Longfor Dim ILS1/2),并且只能成功找到包含這些值之一的第一行,即使我試圖找到所有適用的匹配項并將它們分類到我的用戶表單中(例如: 如果Yellow-Banana-F是, then my code will only find and display 在正確位置? Yellow-Banana-WF Yellow-Banana-F`上方的一行,但另一行根本不會顯示)。
當前代碼拋出錯誤
“運行時錯誤 13:型別不匹配。”
我也嘗試過使用回圈,但我似乎也無法使用它。我是用 VBA 自學的,沒有廣泛的知識,所以也許我在這里遺漏了一些非常簡單的東西,但無論哪種方式,我都很高興聽到任何建議!
當前代碼:
Private Sub CHK1_change()
Dim sh6 as Worksheet
Set sh6 = ThisWorkbook.Sheets("OOS")
Dim ILS1 As String
Dim ILS2 As String
ILSA1 = Me.txtILS.value & "-WF"
ILSA2 = Me.txtILS.value & "-F"
ILS1 = Application.Match(VBA.CStr(ILSA1), sh6.Range("B:B"), 0)
ILS2 = Application.Match(VBA.CStr(ILSA2), sh6.Range("B:B"), 0)
If sh6.range("F" & ILS1). value <> "" then
me.txtILSA1.value = "WF"
If sh6.range("F" & ILS2).value <> "" then
me.txtILSA2.value = "F"
End Sub
uj5u.com熱心網友回復:
使用 Application.Match
- 將結果寫入變體變數 (
sIndex)是個好主意。 - 結果 (
sIndex) 要么是一個整數,指的是第一個找到的值的索引(位置),要么是一個錯誤值(如果不匹配)。 - 您可以
sIndex通過以下兩種方式測驗結果 ( ):
If IsNumeric(sIndex) Then ' used in the code
If IsError(sIndex) Then
快速修復
Option Explicit
Private Sub CHK1_change()
Dim sh6 As Worksheet: Set sh6 = ThisWorkbook.Worksheets("OOS")
Dim Suffixes As Variant: Suffixes = Array("WF", "F")
Dim TextBoxes As Variant: TextBoxes = Array(Me.txtILSA1, Me.txtILSA2)
Dim ILSA As String
Dim sIndex As Variant
Dim n As Long
For n = LBound(Suffixes) To UBound(Suffixes)
ILSA = Me.txtILS.Value & "-" & Suffixes(n)
sIndex = Application.Match(ILSA, sh6.Range("B:B"), 0)
If IsNumeric(sIndex) Then ' is number
If sh6.Range("F" & sIndex).Value <> "" Then ' cell not blank
TextBoxes(n).Value = Suffixes(n)
'Else ' cell (in column 'F') is blank
End If
'Else ' is error value
End If
Next n
End Sub
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/346671.html
