gpt4 book ai didi

excel - 如何使用偏移量使用 VBA 扩展命名范围

转载 作者:行者123 更新时间:2023-12-04 21:49:55 24 4
gpt4 key购买 nike

我有以下代码在 VBA 中用于 excel。

它遍历我的表,并根据 B 列(“OSI”)和 C 列(即“报告”)中的值创建一个命名范围

Sub Round2()

Set sht = ThisWorkbook.Worksheets("Features")

'Reporting and OSI

Set featuresRng = sht.Range(sht.Range("B1"), sht.Range("C" & sht.Rows.Count).End(xlUp))
rngArray = featuresRng
ReDim NewArr(1 To 1)
y = 1
For i = 1 To UBound(rngArray)
If rngArray(i, 2) = "Reporting" And rngArray(i, 1) = "OSI" Then
ReDim Preserve NewArr(1 To y)
NewArr(y) = featuresRng.Rows(i).Offset(0, 2).Address
y = y + 1

End If
Next i

sRng = Join(NewArr, Application.DecimalSeparator)
ThisWorkbook.Names.Add "OSIRep", sht.Range(sRng)

End Sub ()

当我希望范围改为从 D 列到 F 列时,它正在创建一个两列宽的命名范围(D 列到 E 列)。

我不确定要编辑代码的哪些部分 - 我很欣赏这可能是一个非常简单的解决方案,但我遇到了麻烦!

最佳答案

使用 Range.Resize property调整范围。 Offset只移动一个范围。

例如,如果您的范围定义为

Dim rng As Range
Set rng = Range("D:E")

并且您想将其扩展 1 列到 F 列,您可以使用
Set rng = rng.Resize(ColumnSize:=rng.Columns.Count + 1) 'extend range by 1 column
Debug.Print rng.Address 'will return $D:$F

关于excel - 如何使用偏移量使用 VBA 扩展命名范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56578310/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com