首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >VBA错误:如何在VBA中定义和初始化数组

VBA错误:如何在VBA中定义和初始化数组
EN

Stack Overflow用户
提问于 2019-05-22 12:09:30
回答 2查看 219关注 0票数 0

我从微软复制了这段代码,但它不能工作。

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

当我执行它时,我在Array语句中的'1‘上得到了一个错误,说“无效的外部过程”。

我正在运行一个初始化模块的代码,想要一个快速的方法来初始化“像素”,并希望我可以使用“数组”。

谢谢你的帮助。Mac

EN

回答 2

Stack Overflow用户

发布于 2019-05-22 13:35:56

下面是一些示例方法。

代码语言:javascript
复制
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

希望这会给你一个很好的横截面,并根据注释,确保它包含在函数或过程(sub)中。请参见我的示例。

票数 2
EN

Stack Overflow用户

发布于 2019-05-22 12:17:06

您可以在下面尝试此示例。

代码语言:javascript
复制
Dim Pixcels(2) As Integer

Pixcels(0) = 1

Pixcels(1) = 2

Pixcels(2) = 3
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56249183

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档