Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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切换到VB.net-将数组数组(变量)更改为?_Arrays_Vb.net_Vba - Fatal编程技术网

Arrays 从VBA切换到VB.net-将数组数组(变量)更改为?

Arrays 从VBA切换到VB.net-将数组数组(变量)更改为?,arrays,vb.net,vba,Arrays,Vb.net,Vba,我正在尝试切换到vb.net一个旧的vba代码 在VBA代码中,我有一个数组来存储(每个子数组中)一个数字(min=3 max=8)和一些字符串(等于存储到子数组中的数字) 我还没有决定使用什么类型的对象来代替数组数组 该数组包含6个表的列数及其名称。如果我可以使用表名调用每组表数据,这将非常有用 我曾考虑为每个子数组使用字典,但我希望有更好的建议 VBA数组如下所示: MT = Array( _ Array(8, "ColA1", "ColA2", "ColA3", "ColA4", "Col

我正在尝试切换到vb.net一个旧的vba代码

在VBA代码中,我有一个数组来存储(每个子数组中)一个数字(min=3 max=8)和一些字符串(等于存储到子数组中的数字)

我还没有决定使用什么类型的对象来代替数组数组

该数组包含6个表的列数及其名称。如果我可以使用表名调用每组表数据,这将非常有用

我曾考虑为每个子数组使用字典,但我希望有更好的建议

VBA数组如下所示:

MT = Array( _
Array(8, "ColA1", "ColA2", "ColA3", "ColA4", "ColA5", "ColA6", "ColA7", "ColA8"), _
Array(3, "ColB1", "ColB2", "ColB3"), _
Array(4, "ColC1", "ColC2", "ColC3", "ColC4"), _
Array(6, "ColD1", "ColD2", "ColD3", "ColD4", "ColD5", "ColD6"), _
Array(7, "ColE1", "ColE2", "ColE3", "ColE4", "ColE5", "ColE6", "ColE7"), _
Array(5, "ColF1", "ColF2", "ColF3", "ColF4", "ColF5"))

这在很大程度上取决于你想要保存什么

如果您希望能够以类似的方式访问MT,这可能适合您:

Class mta
    Public elem() As String
    Default Property x(indx As Integer) As String
        Get
            Return elem(indx)
        End Get
        Set(value As String)
            ' na
        End Set
    End Property
End Class
Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
    Dim mt As New List(Of mta)
    Dim m As New mta
    m.elem = {8, "ColA1", "ColA2", "ColA3", "ColA4", "ColA5", "ColA6", "ColA7", "ColA8"}
    mt.add(m)
    m.elem = {3, "ColB1", "ColB2", "ColB3"}
    mt.Add(m)
    ' etc
    Debug.Print(mt(1)(1))
End Sub
这将创建一个不规则数组,第一个元素包含一个计数。您可以修改默认的Get()以返回Null版本,以避免出现错误。当然,可以重新设计类mta以获得/设置不同的计数


初始化过程明显不同。

如果只是直接进行转换,则不会从类、列表等方面获得太多好处。整个东西看起来可能是一个
字典(整数,列表(字符串))
,但值可能是一个类(不知道数据代表什么)。@puropoix你给了我一个好主意。谢谢,这样我就可以重用旧代码的循环了。。)Ooops:如何将项目循环到每个m中?我怎么能数呢
对于x=0到mt.count有效,但是对于y=0到mt(x.count)有效。code>没有其他问题:为什么我更喜欢使用这个类而不是锯齿数组?我不知道如何创建“锯齿数组”。你可以使用一个2d数组,该数组的计数在第一列中,就像以前一样,但只有一堆未使用的单元格。RE:Count-可以向返回所需值的类添加Count属性。如果数据结构保持不变,只需返回数组中的第0个元素,按照惯例,该元素是计数。