Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 根据VBA中的变量选择要使用的数组_Arrays_Vba - Fatal编程技术网

Arrays 根据VBA中的变量选择要使用的数组

Arrays 根据VBA中的变量选择要使用的数组,arrays,vba,Arrays,Vba,是否可以根据变量名选择要填充的数组 我有4组数据,分别属于黄色、蓝色、绿色和淡紫色。我创建了4个完全相同的数组。数据是相同的,只是它的开头有Y、B、G或L,我想填充相应的数组,但不想创建4组所有数据 For i = 0 To UBound(myLines) myAlrmStrDate = Mid(myLines(i), 6, 2) & "/" & Mid(myLines(i), 4, 2) & "/" & Mid(myLines(i), 2, 2)

是否可以根据变量名选择要填充的数组

我有4组数据,分别属于黄色、蓝色、绿色和淡紫色。我创建了4个完全相同的数组。数据是相同的,只是它的开头有Y、B、G或L,我想填充相应的数组,但不想创建4组所有数据

For i = 0 To UBound(myLines)
     myAlrmStrDate = Mid(myLines(i), 6, 2) & "/" & Mid(myLines(i), 4, 2) & "/" & Mid(myLines(i), 2, 2)
     myAlrmStrTime = Mid(myLines(i), 9, 2) & ":" & Mid(myLines(i), 11, 2) & ":" & Mid(myLines(i), 13, 2)
     myAlrmEndDate = Mid(myLines(i), 38, 2) & "/" & Mid(myLines(i), 36, 2) & "/" & Mid(myLines(i), 34, 2)
     myAlrmEndTime = Mid(myLines(i), 41, 2) & ":" & Mid(myLines(i), 43, 2) & ":" & Mid(myLines(i), 45, 2)
     myFaultDesc = (Mid(myLines(i), 49, 50))
     mySorter = (Mid(myLines(i), 53, 1))
        myCtime = CDate(myAlrmStrTime)
        myMinutes = Hour(myCtime) * 3600 + Minute(myCtime) * 60 + Second(myCtime)
        myftime = Int(myMinutes / 900) * 900
        myftime = myftime / 86400 * 96

  ' Find IOTT Alarms
     If InStr(1, (Mid(myLines(i), 49, 50)), "IOTT") And InStr(1, (Mid(myLines(i), 49, 50)), "CSC ack") <> 0 Then
        myTimeDiff = CDate(myAlrmEndTime) - CDate(myAlrmStrTime)
        mySorter(myftime).IOTT = mySorter(myftime).IOTT + 1
        mySorter(myftime).IOTTDUR = mySorter(myftime).IOTTDUR + myTimeDiff
        mySorter(96).IOTT = mySorter(96).IOTT + 1
          If mySorter(myftime).IOTT > mySorter(98).IOTT Then
            mySorter(97).IOTT = myftime
            mySorter(98).IOTT = mySorter(myftime).IOTT
          End If
       MsgBox "Line" & "=" & i & myFaultDesc
     End If
我当前的数组设置如下

Type Sorter
     Date                As Date
     time                As Date
     Colour              As Long
     Area                As String
     Cart                As Long
     ISD                 As Long
     WNI                 As Long
     WNIDUR              As Date
     LM                  As Long
     IOTT                As Long
     IOTTDUR             As Date
     IOC                 As Long
End Type

Global Y() As Sorter
Global G() As Sorter
Global B() As Sorter
Global L() As Sorter
Global YGBL() As Sorter

ReDim Y(99)
ReDim G(99)
ReDim B(99)
ReDim L(99)
ReDim YGBL(99, 4)
YGBL是一个建议的补充,但仍在研究如何实现这一点


感谢您可以创建多维数组,其中一个维度对应于颜色。您可以使用以下指令确定第一个维度的索引

colind=instr("YBGL",mysorter)
如果多维数组的名称是YBGL,那么您可以使用,例如您提到的示例

YBGL(colind,myftime).IOTTDUR

看起来您提供的代码使您更难理解您想要什么。您可能希望将填充数组的代码移动到另一个子数组中,并将四个数组中的一个作为
byref
参数传递给它。您好,我目前有四个单独的数组,根据我搜索的字符串中是Y、B、G还是L,我想在相应的数组中添加不同的值声明一个数组,填充它,最后将其分配给Y、B、G或L?或者,如果你想避免复制到四个数组中的一个,填充引用并销毁它?Serg,每行的数据可能不同,因此我必须检查它是否为Y、B、G、L,然后在遍历文件时向每个数组中添加值,直到我到达末尾,然后将数组输出到工作表中。因此,需要保持所有数组“活动”,但只需按我所说的切换4:谢谢,您的指示灯是正确的,因此,如果您的建议正确,我应该创建一个包含所有4个的数组,然后按照您上面的建议选择适当的列。不太确定我是否理解您的第一条语句?第一条语句将mysorter中的代码转换为1到4之间的数字,1表示Y,2表示B,3表示G,4表示L。然后将该数字用作数组第一维的索引。数组YBGL的尺寸应如下所示
Dim YBGL(4,99)
H2so4:完善您的建议,经过一点调整后,使其正常工作,非常感谢您的帮助,使代码变得非常简单
YBGL(colind,myftime).IOTTDUR