excel - 将 For Each 中的 Variant 转换为范围

标签 excel vba for-loop variables

有没有办法在 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/

相关文章:

excel - 使用 VBA 缩放几列以适合页面

vba - 遍历所有工作表以分别在每个选项卡中查找最底部的数据行

excel - 使用 VBA 关闭同一计算机上另一个用户打开的 Excel 工作簿

javascript - Angular html中的嵌套循环

sql - 是否能够将 VBA 变量传递给 ADO SQL 语句?

vba - 从网页中提取数据 - 使用 VBA

vba - 用于启用/禁用表单中其他复选框的复选框

linux - 排除日志中的 grep 文件名

python - 奇怪的for循环语句

javascript - 使用模块 xlsx 样式时无法找到命名空间 XLSX