我被告知有一种方法可以将数据存储在动态数组中,然后可以在函数中引用它。
我来自我最近回答的问题:Showing hidden column in another sheet
我试图找出如何在动态数组中存储我的代码必须对其执行操作的行(第一个数组),列(第二个数组)和工作表(第三个数组)。 我的课堂上还没有完成数组,我只是猜测它是我研究过的动态数组。你认为这可以使用不同的尺寸在同一个阵列中完成吗? (已编辑 - >) - 更具体:我正在寻找一种方法来存储特定工作表的一些特定行(或列)然后(在一个循环中我猜)为每个元素运行我的函数。 / p>
我已阅读基本文档(https://msdn.microsoft.com/en-us/library/aa716275(v=vs.60).aspx)并在此处查找类似帖子,但我找不到它。如果有人可以指出我应该做什么或阅读以实现这一点,我可以尝试自己做,如果你认为它更好。
编辑: 我想我正在取得一些进展,但我仍然不知道如何引用该范围内的工作表。
这是否可以完成工作(如果我不需要工作表参考)?
Public Sub Test()
Dim Rng As Range
Dim Area As Range
Set Rng = Range("A1:A10,B1:B20,G1:G3")
For Each Area In Rng.Areas
Area.Hidden = True
Next Area
End Sub
答案 0 :(得分:1)
您可以使用单个Range数组来管理它,因为范围指的是:
专栏
Dim array() as Range
...
' Store with
set array(i) = worksheet.Range(a, b)
...
' Read with
set range = array(i)
您问题中msdn的链接说明了如何管理动态数组
<强>更新强>
代码中的问题是您没有参考您想要的工作表。 如果没有指示工作表,在最好的情况下会抛出错误,在最坏的情况下它会采用“活动表”(是的,错误是一个更好的情况,然后工作你不知道是什么)。
考虑您知道工作表的名称(或其位置),您可以在参数
中传递它Public Sub Test(byval sheetname as string)
' First solution: declare a worksheet variable referencing to your worksheet
dim ws as worksheet, rng as range, area as range
set ws = Worksheets(sheetname)
Set rng = ws.Range("A1:A10,B1:B20,G1:G3")
For Each area In rng.Areas
area.Hidden = True
Next Area
' You could replace the dim of ws by a With Worksheets(sheetname)
' and work with .Range() instead
End Sub