Ошибка VBA: Как определить и инициализировать массив в VBA - PullRequest
0 голосов
/ 22 мая 2019

Я скопировал этот код из Microsoft, но он не работает.

Dim Pixels(1 To 3) As Integer Pixels = Array(1, 2, 3)

Когда я его извиняю, я получаю сообщение об ошибке «1» в выражении Array:«Недопустимая процедура извне».

Я запускаю код из модуля инициализации и хотел бы получить быстрый способ инициализации «Пикселей» и надеялся, что смогу использовать «Массив».

Спасибо затвоя помощь.Mac

Ответы [ 2 ]

2 голосов
/ 22 мая 2019

Некоторые примеры методов здесь ...

Public Sub DefineArray()
    Dim i As Long

    ' ---------------------------------------------------------------
    ' Using the Array function
    ' ---------------------------------------------------------------
    Dim arrTest1 As Variant

    arrTest1 = Array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10)

    For i = 0 To UBound(arrTest1)
        Debug.Print arrTest1(i)
    Next

    ' ---------------------------------------------------------------
    ' ReDim Preserve
    ' ---------------------------------------------------------------
    Dim arrTest2() As String

    For i = 0 To 10
        ReDim Preserve arrTest2(i)
        arrTest2(i) = i
    Next

    For i = 0 To UBound(arrTest2)
        Debug.Print arrTest2(i)
    Next

    ' ---------------------------------------------------------------
    ' Fixed at declaration
    ' ---------------------------------------------------------------
    Dim arrTest3(10) As String

    For i = 0 To UBound(arrTest3)
        arrTest3(i) = i
    Next

    For i = 0 To UBound(arrTest3)
        Debug.Print arrTest3(i)
    Next

    ' ---------------------------------------------------------------
    ' Using a function that returns an array, e.g. Split
    ' ---------------------------------------------------------------
    Dim strTest As String, arrTest4 As Variant

    strTest = "This is a test"
    arrTest4 = Split(strTest, " ")

    For i = 0 To UBound(arrTest4)
        Debug.Print arrTest4(i)
    Next

    ' ---------------------------------------------------------------
    ' From a range
    ' ---------------------------------------------------------------
    Dim arrTest5 As Variant, lngRow As Long, lngCol As Long

    arrTest5 = Sheet1.Range("A1:K10").Value

    For lngRow = LBound(arrTest5, 1) To UBound(arrTest5, 1)
        For lngCol = LBound(arrTest5, 2) To UBound(arrTest5, 2)
            Debug.Print arrTest5(lngRow, lngCol)
        Next
    Next
End Sub

Надеюсь, это даст вам хорошее сечение и, согласно комментарию, убедитесь, что оно содержится в функции или процедуре (подпункте). Смотрите мой пример.

0 голосов
/ 22 мая 2019

Вы можете попробовать этот образец ниже.

Dim Pixcels(2) As Integer

Pixcels(0) = 1

Pixcels(1) = 2

Pixcels(2) = 3
...