将 For Each 中的 Variant 转换为 range
Convert Variant in For Each to range
有什么方法可以将 Variant 变量转换为 VBA 中的 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。
有什么方法可以将 Variant 变量转换为 VBA 中的 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。