繁体   English   中英

VBA 遍历命名范围 - 在变体上使用间接

[英]VBA Loop through named ranges - using Indirect on variants

我正在尝试遍历多个命名范围,每个范围只是一个单元格,位于一列中,因此它以 item1、item2...item100 开头。这些范围中的每一个都有一个单元格引用(如“AM100” ). 我希望能够设置一个 for/while 循环,它只选择(并执行某些操作)这些命名范围中的每个引用单元格。 我被困在 VBA 不考虑 "item"&"1" 与 "item"&"i" 当 i =1 时相同,从我推断这纯粹是数据类型问题。 它能够引用纯字符串范围,但当它是变体/字符串类型时(字符串或转换后的字符串变量的任何串联结果)。

item1 范围内有 $AM$10 参考。 那个细胞,有它的价值。 最后,我想通过引用包含其引用的名称范围来更改多个相似单元格中的值。

没有“for”循环,我测试了以下内容:

Sub test()
Dim i as integer

i=1
'These don't work
Range([indirect("item"&CSTR(i))]).Select
Range([indirect("item"&i)]).Select

'What works is, but this is not useful since I want to loop through i:
Range([indirect("item" & "1")]).Select
Range([indirect("item1")]).Select
Sub Test()
    Dim oDefName As Name
    For Each oDefName In ThisWorkbook.Names
        If Left(UCase(oDefName.Name), 4) = "ITEM" Then
            Range(oDefName.RefersToRange.Value).Select
        End If
    Next
End Sub

注意: 没有错误检查来确保命名范围内的值实际上是单元格引用。

编辑-以上是我将如何解决问题。 间接是在单元格 function 中,不能直接在 vba 中使用。下面是如何使用计数器在 VBA 中获得间接功能。

Range(Range("Item" & oCounter).Value).Select

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM