有没有办法在 VBA 中将 Variant 变量转换为 Range 变量?
让我解释一下为什么我需要这样做。
我用范围作为键填充字典,新值作为项目:
dChanges.add .cells(rowNewTask, rngTaskId.column), TaskId
dChanges.add .cells(rowNewTask, rngNumSection.column), numSection
dChanges.add .cells(rowNewTask, rngSection.column), Section
dChanges.add .cells(rowNewTask, rngMajorTask.column), majorTask
dChanges.add .cells(rowNewTask, rngSubTask.column), subTask
dChanges.add .cells(rowNewTask, rngUnitType.column), unitType
然后对于每个项目,我使用一些函数应用更改: For Each RngI In dChanges
RngI.value = dChanges(RngI)
highlightCell RngI
Next
RngI 需要是 Variant 类型,所以我可以在 For 循环中使用它,但是 highlightCell RngI
要求 RngI 是 Range。
最佳答案
Dim RngI As Range
适用于包含范围的字典。
示例代码:
Sub foobar()
Dim d As Scripting.Dictionary
Set d = New Scripting.Dictionary
d.Add Sheet1.Range("A1"), "foo"
d.Add Sheet1.Range("A2"), "bar"
Dim RngI As Range
For Each RngI In d
RngI.Value = d(RngI)
Next
End Sub
这会将“foo”和“bar”写入单元格 A1 和 A2。
关于excel - 将 For Each 中的 Variant 转换为范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71588881/