我正在尝试使用VBA遍历excel中的表,并将每列的最大值存储在数组变量中,以便以后在程序中使用。
我采用了许多与下面的代码段类似的方法但没有成功。供参考:mainTable
是前面在脚本中定义的Public ListObject变量,mainCols
是一个Pubic Long变量,也是之前定义的变量,它存储mainTable
的宽度:
Dim maxVals() As Long
ReDim maxVals(mainCols)
For x = 0 To mainCols - 1
maxVals(x) = mainTable.ListColumns(x + 1).TotalsCalculation = xlTotalsCalculationMax
Next x
上面的代码执行时没有错误,但始终返回0
重要的是,我不对列/表位置进行硬编码,以便用户可以复制/粘贴不同维度的数据集并运行脚本而不会出错。此外,假设用户可以使用他们想要的任何列标题在数据集上运行此操作。
答案 0 :(得分:0)
您的代码只是更改了表格总计行中使用的计算 - 它实际上并没有返回最大值。你可以使用:
Dim maxVals() As Long
ReDim maxVals(mainCols)
For x = 0 To mainCols - 1
maxVals(x) = WorksheetFunction.Max(mainTable.ListColumns(x + 1).Range)
Next x