Как Redim сохранить зубчатый массив (массивы в массиве) в VBA?

Когда вы создаете собственное приложение / DLL-приложение с Visual Studio, оно получает зависимость от «распространяемого» пакета для этой версии Visual Studio. Это содержит DLL, такие как msvcr100.dll и msvcp100.dll (для различных значений 100).

В моем случае я видел эти DLL в каталоге Windows/system32 целевой машины, поэтому я думал, что все в порядке , Оказывается, эти DLL-файлы были x64! Я не знаю, почему каталог с именем system32 содержит 64-битные библиотеки DLL. Поэтому я искал свой каталог Visual Studio 2010 для всего, что назвал msvc*.dll, и нашел x86 версии msvcr100.dll и msvcp100.dll. Я скопировал их на целевую машину (в месте, доступном по пути моей программы), и все было хорошо.

Надеюсь, это поможет кому-то еще столкнуться с явным безумием Microsoft.

0
задан cekar 18 January 2019 в 12:23
поделиться

1 ответ

VBA не позволит вам напрямую ReDim внутренний массив, однако, вы можете достичь этого довольно легко, используя промежуточный вспомогательный массив (в этом примере с именем tmp)

Option Explicit
Sub ArrayofArrays()
    Dim tmp As Variant
    Dim OuterArray() As Variant
    ReDim OuterArray(0 To 0)

    Dim InnerArray() As Variant
    ReDim InnerArray(0 To 0)

    InnerArray(0) = "Foo"
    OuterArray(0) = InnerArray

    tmp = OuterArray(0)
    ReDim Preserve tmp(LBound(tmp) To UBound(tmp) + 1)
    OuterArray(0) = tmp
    Erase tmp

    OuterArray(0)(1) = "Bar"
    Debug.Print OuterArray(0)(1)
End Sub
0
ответ дан Tom 18 January 2019 в 12:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: