VBA Excel – variables“双”function

我被赋予了一个VBA函数,但是我不明白它是如何工作的,并且会感激你的帮助,因为按照写它的方式,微积分是非常长的(基本算术* 15 000行)

我的问题来自DoublevariablesQty_Level的定义,定义如下:

Dim Qty_Level(30) As Double 

我从来没有见过像这样定义的variables,像一个函数一样的括号。 这是我的代码:

 Sub cumul() Dim i As Long Dim j As Integer Dim Qty_level(30) As Double Dim Col_Niveau As Integer Dim Col_Quantite As Integer Dim Col_Resultat As Integer i = InputBox("Veuillez indiquer le numéro de la première à analyser (numéro de ligne Excel)", "Ligne de départ") Col_Niveau = InputBox("Veuillez indiquer le numéro de la colonne contenant les niveaux", "Niveaux") Col_Quantite = InputBox("Veuillez indiquer le numéro de la colonne contenant les quantités", "Quantités") Col_Resultat = InputBox("Veuillez indiquer le numéro de la colonne contenant les résultats", "Résultats") Do While IsEmpty(Cells(i, Col_Niveau)) = False If IsNumeric(Cells(i, Col_Quantite)) = True Then Qty_level(Cells(i, Col_Niveau).Value) = Cells(i, Col_Quantite).Value Cells(i, Col_Resultat).Value = 1 For j = 1 To Cells(i, Col_Niveau).Value Cells(i, Col_Resultat).Value = Cells(i, Col_Resultat).Value * Qty_level(j) Next j End If i = i + 1 Loop End Sub 

我不明白这是如何工作的,特别是For循环如何与Double(j)

Dim Qty_Level(30) As Double声明了一个名为Qty_Level的静态数组, Qty_Level包含31个Doubletypes(双精度浮点数)的元素,下限为0,上限为30.(除非您在在你的模块的顶部,在这种情况下,你的下限是1,总共有30个元素,但我怀疑它。)

我看到在你当前的循环中,你开始在j = 1迭代,这意味着你永远不会实际访问元素0 。 所以最好明确指定下限:

 Dim QtyLevel(1 To 30) As Double 

当你用一个圆括号和一个值来定义一个数组的时候,它会创build一个数组,其中包含许多元素。 使用30作为最大元素值进行标注,对于0到30之间的variables(因为默认情况下数组将从0开始),最多可以在数组内存储31个值。 将其标注为双精度(根据MSDN),可以存储Visual Basic中可用的最大和最小数字。

循环显示的操作是根据等级列中的数字从数量列中提取数量值,然后将每个存储的数量值相乘,然后将其存储到结果单元格中。

所以如果你的数量是2,4,6,5,当你在3级时,你的结果单元应该显示48,而4级应该显示240.从1循环到级别值允许它遍历整个存储的数量双数组中只包含数字的数量。 levels列应该只包含1到30之间的数字,否则会从qty_level数组中绘制一个错误。