我对VBA的了解很少,所以它可能(我希望)是一个简单的问题。
我希望我的代码能够查看范围,然后根据范围内单元格的值来突出显示相邻单元格。在我发布的代码中问题减少了,因为我只查看3个单元格的范围。实际上,我看到的单元格数量大于500(所以简单地使用没有循环的If语句会很繁琐)。
为了做到这一点,我使用了一个循环并创建了一个字典,以便最终得到rangeArea(1),rangeArea(2)等... 我想虽然因为我的rangeArea(i)被定义为一个对象,我不能让它选择一个范围,因此与Set multipleRange = Union不兼容(我最终得到了所需的消息对象。但是如果我改变了rangeArea到一个范围,然后表示类型不匹配。
我想要它做的是,一旦找到包含我想要的值的所有单元格,它应该选择所有相邻单元格作为一个实体(这就是为什么我使用Set multipleRange = Union()
Sub Macro()
Dim i As Integer
Dim rangeArea As Object
Dim multipleRange As Range
Dim a As String
Set rangeArea = CreateObject("Scripting.Dictionary")
i = 1
Do Until i = 4
If Cells(i, 1) = True Then
Cells(i, 1).Select
ActiveCell.Offset(0, 1).Range("A1:B1").Select
Set rangeArea(i) = Selection
Else
End If
i = i + 1
Loop
Set multipleRange = Union(rangeArea(1), rangeArea(2))
End Sub
我想我几乎就在那里,所以任何帮助都会非常感激。
答案 0 :(得分:0)
这对你有用吗?不要以为你需要一本词典,虽然我不清楚你想要实现什么。您可以使用union构建范围,并在必要时循环遍历这些区域。
Sub Macro()
Dim i As Long
Dim rangeArea As Range
Dim multipleRange As Range
Dim a As String
For i = 1 To 4
If Cells(i, 1) = True Then
If multipleRange Is Nothing Then
Set multipleRange = Cells(i, 2).Resize(, 2)
Else
Set multipleRange = Union(multipleRange, Cells(i, 2).Resize(, 2))
End If
End If
Next i
multipleRange.Select
End Sub