将行,列和表存储在dynamic数组中

我被告知有一种方法可以将数据存储在dynamic数组中,然后在函数中引用它。

我来自我最近回答的问题: 在另一张表中显示隐藏的列

我试图找出如何存储在一个dynamic数组中的行(第一个数组),列(第二个数组)和表(第三个数组)我的代码必须作出行动。 我还没有在我的class级做过数组,我只是猜测这是我研究过的dynamic数组。 你认为这可以用不同的维度在同一个arrays中完成吗? (编辑 – >) – 更具体:我正在寻找一种方法来存储特定的一些特定的行(或列),然后(在我猜的循环中)运行我的函数为每个元素。

我已经阅读了基本的文档( https://msdn.microsoft.com/en-us/library/aa716275(v=vs.60).aspx ),并在这里寻找类似的post,但我找不到它。 如果有人能指出我应该做什么或阅读什么来达到这个目标,我可以自己尝试做,如果你相信它会更好。

编辑:我想我正在取得一些进展,但我仍然不知道如何参考范围内的工作表。

这是否会做这项工作(如果我不需要工作表)?

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 

您可以使用单个数组范围来pipe理该范围,因为范围指的是:

  • 表单
  • 该行
  • 专栏

     Dim array() as Range ... ' Store with set array(i) = worksheet.Range(a, b) ... ' Read with set range = array(i) 

在您的问题中的msdn链接解释了如何pipe理dynamic数组

更新

你的代码中的问题是你不参考你想要的工作表。 如果没有工作表,最好的情况下会抛出一个错误,最糟糕的情况是需要“Activesheet”(是的,错误是一个更好的情况,然后工作,你不知道什么)。

考虑你知道表单的名字(或者它的位置),你可以通过parameter passing它

 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