我在VBA中有一个If / Then循环,用于检查每个选项卡中的相同单元格是否相等,并且我可以创建一个在If / Then循环中工作的字符串,给定已知数量的选项卡(3个选项卡);但是,宏需要查看任意数量的选项卡,我需要一个动态的If / Then语句。我试图创建一个基本上根据选项卡数量编写代码的字符串,但是我得到Type Mismatch,因为字符串是一个变量。
例如,这有三个选项卡:
ifline = "Worksheets(loc(1)).Cells(TseriesLine, 15) = Worksheets(loc(2)).Cells(TseriesLine, 15) _
And Worksheets(loc(1)).Cells(TseriesLine, 15) = Worksheets(loc(3)).Cells(TseriesLine, 15)"
If ifline Then ....
...
但这不起作用:
{{1}}
我也尝试过使用Evalulate(ifline)和StrConv(ifline)来取得成功。任何帮助将不胜感激。
由于
答案 0 :(得分:1)
尝试这样的事情。
如果您知道不想检查的工作表,则可以轻松地对其他工作表名称进行测试。
Dim sValue As String
Dim ws1 As Worksheet
Set ws1 = Worksheets("loc(1)")
sValue = ws1.Cells(TseriesLine, 15).Value2
Dim bifline As Boolean
bifline = True
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
If ws.Name <> ws1.Name Then
If sValue <> ws.Cells(TseriesLine, 15).Value2 Then
bifline = False
Exit For
End
End If
Next
If bifline Then
'more code
End If
答案 1 :(得分:1)
您可以使用每个工作簿对象中的工作表集合遍历每个工作表。
Function doesRangeMatch(rangeAddress As String) As Boolean
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
If ThisWorkbook.Worksheets(1).Range(rangeAddress).Value <> ws.Range(rangeAddress).Value Then
doesRangeMatch = False
Exit Function 'early exit if match not found
End If
Next
doesRangeMatch = True 'if loop goes through then all must match
End Function
答案 2 :(得分:0)
非常感谢大家!我使用了一些建议来提出循环。这是解决方案:
For ss = 2 To numloc
If Worksheets(loc(1)).Cells(TseriesLine, 15) <> Worksheets(loc(ss)).Cells(TseriesLine, 15) Then
doNumMatch = False
Exit For
Else: doNumMatch = True
End If
Next
If doNumMatch Then