Chr*_*isB 17 arrays excel vba constants excel-vba
有可能:
将数组声明为常量
要么
使用变通方法声明一个受保护的数组,以防止添加,删除或更改元素,因此在宏的生命周期中功能上保持不变?
我当然可以这样做:
Const myConstant1 As Integer = 2
Const myConstant2 As Integer = 13
Const myConstant3 As Integer = 17
Const myConstant4 ...and so on
Run Code Online (Sandbox Code Playgroud)
...但它失去了使用数组的优雅.我还可以将常量加载到数组中,并在每次使用它们时重新加载它们,但是在使用之前无法使用这些常量值重新加载数组可能会将代码暴露给已更改的"常量"值.
任何可行的答案都是受欢迎的,但理想的答案是可以设置一次而不需要在修改其他代码时进行任何更改/维护.
小智 26
您可以使用函数返回数组并将该函数用作数组.
Function ContantArray()
ContantArray = Array(2, 13, 17)
End Function
Run Code Online (Sandbox Code Playgroud)
如何使它成为一个功能?如:
Public Function myConstant(ByVal idx As Integer) As Integer
myConstant = Array(2, 13, 17, 23)(idx - 1)
End Function
Sub Test()
Debug.Print myConstant(1)
Debug.Print myConstant(2)
Debug.Print myConstant(3)
Debug.Print myConstant(4)
End Sub
Run Code Online (Sandbox Code Playgroud)
没有人可以改变它,调整它或编辑它的内容......而且,你可以只在一行定义你的常量!
如果特定的 VBA 环境是 Excel-VBA,那么可以从 Excel 应用程序的 Evaluate 方法中获得一个很好的语法,该方法可以缩短为方括号。
看这个
Sub XlSerialization1()
Dim v
v = [{1,2;"foo",4.5}]
Debug.Assert v(1, 1) = 1
Debug.Assert v(1, 2) = 2
Debug.Assert v(2, 1) = "foo"
Debug.Assert v(2, 2) = 4.5
'* write all cells in one line
Sheet1.Cells(1, 1).Resize(2, 2).Value2 = v
End Sub
Run Code Online (Sandbox Code Playgroud)
我声明了一个String常量,"1,2,3,4,5"然后用来Split创建一个新数组,如下所示:
Public Const myArray = "1,2,3,4,5"
Public Sub createArray()
Dim i As Integer
A = Split(myArray, ",")
For i = LBound(A) To UBound(A)
Debug.Print A(i)
Next i
End Sub
Run Code Online (Sandbox Code Playgroud)
当我试图使用ReDim或ReDim Preserve在A它没有让我。这种方法的缺点是,即使您不能更改大小,您仍然可以编辑数组的值。
| 归档时间: |
|
| 查看次数: |
30824 次 |
| 最近记录: |