gpt4 book ai didi

arrays - 在 VBA 中使用范围数组 - Excel

转载 作者:行者123 更新时间:2023-12-02 00:34:51 26 4
gpt4 key购买 nike

VBA 是否支持使用范围变量数组?

dim rangeArray() as range
dim count as integer
dim i as integer

count = 3

redim rangeArray(1 to count)

for i = 1 to count
msgbox rangeArray(i).cells(1,1).value
next

我无法让它在这种类型的应用程序中工作。我想按一定顺序存储一系列范围作为“主副本”。然后我可以添加、删除、排序或对该数组执行任何操作,然后将其打印到 Excel 中的一系列范围。 excel 似乎不支持这一点 - 它只是强制您将数据存储在电子表格中,并且您必须重新读取它才能使用它。

最佳答案

不,数组不能容纳对象。但是对象可以容纳对象。我认为您可能想要的是一个由各种特定的其他 Range 对象组成的 Range 对象。在此示例中,rMaster 是我的“数组”,包含三个单元。

Sub StoreRanges()

Dim rMaster As Range
Dim rCell As Range

Set rMaster = Sheet1.Range("A1")
Set rMaster = Union(rMaster, Sheet1.Range("A10"))
Set rMaster = Union(rMaster, Sheet1.Range("A20"))

For Each rCell In rMaster
MsgBox rCell.Address
Next rCell

End Sub

根据我新发现的知识,数组可以保存范围(thnx jtolle),下面是如何在数组中存储范围并对它们进行排序的示例

Sub UseArray()

Dim aRng(1 To 3) As Range
Dim i As Long

Set aRng(1) = Range("a1")
Set aRng(2) = Range("a10")
Set aRng(3) = Range("a20")

BubbleSortRangeArray aRng

For i = LBound(aRng) To UBound(aRng)
Debug.Print aRng(i).Address, aRng(i).Value
Next i

End Sub

Sub BubbleSortRangeArray(ByRef vArr As Variant)

Dim i As Long, j As Long
Dim vTemp As Variant

For i = LBound(vArr) To UBound(vArr) - 1
For j = i To UBound(vArr)
If vArr(i).Value > vArr(j).Value Then
Set vTemp = vArr(i)
Set vArr(i) = vArr(j)
Set vArr(j) = vTemp
End If
Next j
Next i

End Sub

关于arrays - 在 VBA 中使用范围数组 - Excel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3630704/

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