嵌套 InStr VBA Excel
Nested InStr VBA Excel
我正在尝试循环并在一长串代码中找到一些组件以传递到不同的单元格。
现在我得到了这个
Sub przenoszenie()
Dim wb As Workbook
Dim komorka As Range
Dim komorka2 As Range
Set wb = ThisWorkbook
Set komorka = wb.Worksheets("Dane").Range("B2")
Set komorka2 = wb.Worksheets("Dane").Range("J2")
For i = 1 To 10000
If InStr(1, komorka.Value, "width=109") And InStr(1, komorka.Value, "colSpan=8") Then
komorka2.Value = komorka.Value
Else
If InStr(1, komorka.Value, "width=90") Then
komorka2.Value = komorka.Value
Else
If InStr(1, komorka.Value, "width=374") Then
komorka2.Value = komorka.Value
End If
End If
End If
komorka = komorka.Offset(1, 0)
komorka2 = komorka2.Offset(1, 0)
Next i
我知道我正在寻找的字符串部分位于 Excel.
的 B 列中
但是我在 J 列中没有得到任何结果。我知道我在那些 If
语句中遗漏了一些东西。就是想不通 ;/
可能的解决方案:
尝试将 Instr
条件更改为 Instr(...) > 0
,如下所示:
Sub przenoszenie()
Dim wb As Workbook
Dim komorka As Range
Dim komorka2 As Range
Set wb = ThisWorkbook
Set komorka = wb.Worksheets("Dane").Range("B2")
Set komorka2 = wb.Worksheets("Dane").Range("J2")
For i = 1 To 10000
If InStr(1, komorka.Value, "width=109") > 0 And InStr(1, komorka.Value, "colSpan=8") > 0 Then
komorka2.Value = komorka.Value
Else
If InStr(1, komorka.Value, "width=90") > 0 Then
komorka2.Value = komorka.Value
Else
If InStr(1, komorka.Value, "width=374") > 0 Then
komorka2.Value = komorka.Value
End If
End If
End If
Set komorka = komorka.Offset(1, 0)
Set komorka2 = komorka2.Offset(1, 0)
Next i
如果这不能正常工作,那么另一个可能的问题是大小写匹配。要使您的搜索不区分大小写,请使用例如 Instr(1, komorka.Value, "width=374", vbTextCompare)
编辑:刚刚阅读@JvdV 的评论(现已删除)并添加了Set
关键字
我正在尝试循环并在一长串代码中找到一些组件以传递到不同的单元格。
现在我得到了这个
Sub przenoszenie()
Dim wb As Workbook
Dim komorka As Range
Dim komorka2 As Range
Set wb = ThisWorkbook
Set komorka = wb.Worksheets("Dane").Range("B2")
Set komorka2 = wb.Worksheets("Dane").Range("J2")
For i = 1 To 10000
If InStr(1, komorka.Value, "width=109") And InStr(1, komorka.Value, "colSpan=8") Then
komorka2.Value = komorka.Value
Else
If InStr(1, komorka.Value, "width=90") Then
komorka2.Value = komorka.Value
Else
If InStr(1, komorka.Value, "width=374") Then
komorka2.Value = komorka.Value
End If
End If
End If
komorka = komorka.Offset(1, 0)
komorka2 = komorka2.Offset(1, 0)
Next i
我知道我正在寻找的字符串部分位于 Excel.
的 B 列中
但是我在 J 列中没有得到任何结果。我知道我在那些 If
语句中遗漏了一些东西。就是想不通 ;/
可能的解决方案:
尝试将 Instr
条件更改为 Instr(...) > 0
,如下所示:
Sub przenoszenie()
Dim wb As Workbook
Dim komorka As Range
Dim komorka2 As Range
Set wb = ThisWorkbook
Set komorka = wb.Worksheets("Dane").Range("B2")
Set komorka2 = wb.Worksheets("Dane").Range("J2")
For i = 1 To 10000
If InStr(1, komorka.Value, "width=109") > 0 And InStr(1, komorka.Value, "colSpan=8") > 0 Then
komorka2.Value = komorka.Value
Else
If InStr(1, komorka.Value, "width=90") > 0 Then
komorka2.Value = komorka.Value
Else
If InStr(1, komorka.Value, "width=374") > 0 Then
komorka2.Value = komorka.Value
End If
End If
End If
Set komorka = komorka.Offset(1, 0)
Set komorka2 = komorka2.Offset(1, 0)
Next i
如果这不能正常工作,那么另一个可能的问题是大小写匹配。要使您的搜索不区分大小写,请使用例如 Instr(1, komorka.Value, "width=374", vbTextCompare)
编辑:刚刚阅读@JvdV 的评论(现已删除)并添加了Set
关键字