类型不匹配错误通过工作表VBA循环
我不断收到类型不匹配的错误,并试图改变几次类型。我只是试图遍历每个工作表和指定范围,以查看该范围内每个单元格中是否存在该单词。类型不匹配错误通过工作表VBA循环
Sub CheckWord()
Dim arrVar As Variant
Dim ws As Worksheet
Dim strCheck As Range
Set arrVar = ActiveWorkbook.Worksheets
'MsgBox (arrVar)
For Each ws In arrVar
If ws.Range("C9:G20").Value = "Word" Then
MsgBox (True)
End If
Next ws
End Sub
当你有一个range
具有很多列,它创建了一个阵列的例子。 以阵列考虑像这样:
Sub CheckWord()
Dim arrVar As Variant
Dim ws As Worksheet
Dim strCheck As Range
Set arrVar = ActiveWorkbook.Worksheets
'MsgBox (arrVar)
For Each ws In arrVar
For each col in ws.Range("C9:G20").Cells
if col.Value = "Word" Then
MsgBox (True)
end if
End If
Next ws
End Sub
您无法迭代这些值,然后在该值上调用.value。您需要删除其中一个 – Brad
良好的呼叫@Brad它是Cells集合,而不是Value属性。 –
你不能得到的ws.Range("C9:G20")
的value
,并将它与一个字符串。你已经选择了多个单元格。如果你想返回True
当这些单元格之一包含“单词”,或者当它们全部包含“单词”时,你需要遍历它们。
这是如何来回报您的范围是否包含“字”的任何地方至少一次
Function CheckWord()
Dim arrVar As Variant
Dim ws As Worksheet
Set arrVar = ActiveWorkbook.Worksheets
For Each ws In arrVar
Dim c
For Each c In ws.Range("C9:G20").Cells
If c = "Word" Then
CheckWord = True
Exit Function
End If
Next c
Next ws
End Function
Sub CheckWord()
Dim ws As Worksheet
For Each ws In ActiveWorkbook.Worksheets
If Not ws.Range("C9:G20").Find(What:="Word", LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=False) Is Nothing Then MsgBox "Found in " & ws.Name
Next ws
End Sub
@OluO .:你通过了吗? – user3598756
是的,一旦我看到了解释ti,一切都变得有意义了。谢谢! –
欢迎光临。然后标记你采用的答案作为解决方案 – user3598756
'ws.Range( “C9:G20”)'返回包含阵列的'Variant'。你不能将它与'String'进行比较。 – Comintern