배열을 상수로 선언할 수 있습니까?
다음 중 하나를 수행할 수 있습니까?
배열을 상수로 선언
OR
해결 방법을 사용하여 요소 추가, 삭제 또는 변경으로부터 보호되며, 따라서 매크로가 실행되는 동안 기능적으로 일정한 어레이를 선언하시겠습니까?
물론 이렇게 할 수 있습니다.
Const myConstant1 As Integer = 2
Const myConstant2 As Integer = 13
Const myConstant3 As Integer = 17
Const myConstant4 ...and so on
...하지만 어레이로 작업하는 우아함을 잃습니다.또한 상수를 배열에 로드하고 사용할 때마다 다시 로드할 수 있지만, 사용하기 전에 해당 상수 값으로 배열을 다시 로드하지 않으면 코드가 변경된 "상수" 값에 노출될 수 있습니다.
실행 가능한 모든 답변을 환영하지만 이상적인 답변은 한 번 설정할 수 있으며 다른 코드를 수정할 때 변경/유지보수가 필요하지 않은 답변입니다.
함수를 사용하여 배열을 반환하고 해당 함수를 배열로 사용할 수 있습니다.
Function ContantArray()
ContantArray = Array(2, 13, 17)
End Function
그것을 함수로 만드는 것은 어떻습니까?예:
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
누구도 변경하거나 크기를 조정하거나 내용을 편집할 수 없습니다.또한 한 줄에 상수를 정의할 수 있습니다!
나는 선언했습니다.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
사용하려고 했을 때ReDim
또는ReDim Preserve
에A
그것은 나를 허락하지 않았습니다.이 방법의 단점은 크기를 변경할 수 없더라도 배열 값을 편집할 수 있다는 것입니다.
특정 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
사용할 때마다 새 인스턴스가 필요하지 않은 경우Static
다중 개체 생성 및 초기화를 방지하는 로컬 변수:
Private Function MyConstants()
Static constants As Variant
If IsEmpty(constants) Then
constants = Array(2, 13, 17)
End If
MyConstants = constants
End Function
배열을 상수로 선언할 수 있습니까?아니요.
해결 방법 - 가장 간단한 방법은 구분 기호를 사용하여 상수를 정의한 다음 사용하는 것입니다.Split
배열을 생성하는 함수입니다.
Const myConstant = "2,13,17"
Sub Test()
i = Split(myConstant, ",")
For j = LBound(i) To UBound(i)
Debug.Print i(j)
Next
End Sub
너무 단순한 건가요?
PUBLIC CONST MyArray = "1,2,3,4"
모듈의 뒷부분에 표시됩니다.
Dim Arr as Variant
SET Arr = split(MyArray,",")
이것이 오래된 질문이라는 것을 알지만, 이 아카이브들은 게시된 후 수년간 스캔되는 경우가 많기 때문에 출처 날짜가 한참 지난 후에 추가하는 것은 문제가 없다고 봅니다.
읽기 전용 속성이 'array' 값을 반환하는 클래스를 만드는 것은 어떻습니까?배열 인덱스와 동일한 구문을 사용하여 매개 변수를 지정할 수 있으며 GET 속성만 정의하면 사실상 읽기 전용이 됩니다.클래스 내부의 상수 값을 정의하면 실제 구성이 다르더라도 상수 배열처럼 작동합니다.
아니오 - 어레이를 상수로 선언할 수는 없지만 해결 방법을 사용할 수 있습니다.
원하는 배열을 반환하는 함수를 만들 수 있습니다.
http://www.vbaexpress.com/forum/showthread.php?1233-Solved-Declare-a-Constant-Array
위의 정보를 이용하여 독일어를 사용하는 Excel과 무관하게 한 달의 짧은 텍스트 정보를 비교하기 위한 작업 솔루션을 다음과 같이 결정했습니다.
콘스탄 모나테 = ",얀, 2월, 메르츠, 4월, 마이, 준, 줄, 8월, 9월, 옥트, 11월, 데즈"
코드의 뒷부분에 있습니다.
If StringToCompare = Split(MONATE, ",")(Month(dt)) Then
참고: 분할 배열은 색인 0으로 시작하므로 처음에 쉼표를 추가했습니다.
이것이 언제 바뀌었는지는 모르지만, 엑셀 365에서는 이것이 작동합니다(또는 적어도 컴파일러 오류는 발생하지 않습니다).
Const table1Defs As Variant = Array("value 1", 42, Range("A1:D20"))
언급URL : https://stackoverflow.com/questions/41046174/can-an-array-be-declared-as-a-constant
'programing' 카테고리의 다른 글
명령이 0이 아닌 값을 반환하는 경우 셸 스크립트 중단 (0) | 2023.05.27 |
---|---|
파이썬에서 다중 처리에서 "속성 오류: __exit_" 문제를 해결하는 방법은 무엇입니까? (0) | 2023.05.27 |
iPhone 애플리케이션을 개발할 때 프로비저닝 프로필은 무엇에 사용됩니까? (0) | 2023.05.27 |
JavaScript가 배열에 있습니다. (0) | 2023.05.27 |
그래프비즈:.dot에서 그래프로 이동하는 방법은? (0) | 2023.05.27 |