【python VS vba(系列4)】 python和vba 的数组差别(草稿建设ing)

数组差别

VBA

数组如何创建

数组声明

数组赋值

Dim arr(),brr
arr = [...] ►报错:类型不匹配
arr = Range(...) ►赋值成功
brr = [...] ►赋值成功
arr = Sheets(...).Range(...) ►报错:类型不匹配
arr = Sheets(...).Range(...).Value ►赋值成功
以上5种数组赋值行为,为什么有两种会报错而其他能成功呢?

你好,我刚试了下
前3条里,数组赋值问题,VBA里不能写成[1,2,3] 需要写成[{1,2,3}] 这样。和python写法不同,[{1,2,3}] 用arr,brr都是可以的

后面2个,主要是因为range()可以直接赋值给变量brr,但是不能直接赋值给数组arr(),确实有点恶心。

而且第3行可以,但是第5行不可以,无非解释,非常无语
感觉VBA太。。。。



Sub test201()
'Dim arr(),brr
'arr = [...] ?报错:类型不匹配
'arr = Range(...) ?赋值成功
'brr = [...] ?赋值成功
'arr = Sheets(...).Range(...) ?报错:类型不匹配
'arr = Sheets(...).Range(...).Value ?赋值成功

Dim arr(), brr

'    ReDim arr(0 To 2)
'    arr = [1,2,3]
'    Debug.Print arr(0)


    arr = [{1,2,3}]
    
    For Each i In arr
        Debug.Print i
    Next
    Debug.Print arr(1)
    


    
    arr = Range("a1:b2")
    
    For Each i In arr
        Debug.Print i
    Next
    Debug.Print arr(1, 1)
    

    brr = [{1,2,3}]
    
    For Each i In brr
        Debug.Print i
    Next
    Debug.Print brr(1)
    
'''    brr = [1,2,3]
'''    Debug.Print brr
    
'    arr = Sheets("sheet1").Range("a1:b2")


    brr = Sheets("sheet1").Range("a1:b2")

    For Each i In brr
        Debug.Print i
    Next
    Debug.Print brr(1, 1)



'    arr = Sheets("sheet1").Range("a1:b2")
'    For Each i In arr
'        Debug.Print i
'    Next
'    Debug.Print arr(1, 1)

    
    arr = Sheets("sheet1").Range("a1:b2").Value

    For Each i In arr
        Debug.Print i
    Next
    Debug.Print arr(1, 1)
    
    Debug.Print TypeName(Range("a1:b2"))
    Debug.Print TypeName(Sheets("sheet1").Range("a1:b2"))
    Debug.Print TypeName(Sheets("sheet1").Range("a1:b2").Value)
    Debug.Print TypeName([1,2,3])
    Debug.Print TypeName([{1,2,3}])
    Debug.Print TypeName(Array(1, 2, 3))
    
''    arr = Range("a1:b2")
''    arr = Sheets("sheet1").Range("a1:b2")


End Sub

【python VS vba(系列4)】 python和vba 的数组差别(草稿建设ing)_第1张图片

VBA里

确实有太多,比较模糊,不好做莫的东西

数组内容

数组遍历

数组打印

python

数组,数组和字符串

你可能感兴趣的:(python,开发语言)