2013-04-14 1 views
0

매크로 속도를 향상시킬 때 As Long이 As Variant보다 훨씬 우수하다는 것을 알았습니다.As에서 As 로의 Listbox 코드

Dim data1() As Variant 
data1 = Array("a", "b", "c", "d", "e") 
Sheet1.ListBox1.List = data1 

내가 길기로 바꿀 때 코드가 더 이상 작동하지 않습니다.

+0

답변 중 하나가 도움이 되셨다면 수락을 고려해보십시오 (우수 답변의 왼쪽에있는 녹색 체크 표시를 클릭하십시오). – michaelb958

답변

1

배열에 Long이 포함되어 있지 않습니다. 배열에 String이 포함되어 있습니다. 시도하십시오 Dim data1() As String. (걱정하지 마세요. As Variant보다 여전히 빠릅니다.)

1

명시 적 유형은 인 반면 일반적으로 (거의 항상)이 더 좋습니다. 이 경우는 속성이 ListBox이므로 Variant array이므로 String 또는 Long 배열을 할당하면 암시 적 타입 캐스트가 발생하므로 더 빠르지 않으며 느려질 수도 있습니다.

ListBox에 할당하기 전에 배열에 데이터를로드하는 방법이 달라질 수 있습니다. thats을 사용하면 명시 적으로 형식화 된 배열을 더 효율적으로 사용할 수 있습니다. Array(...)가 명시 적으로 형식화 된 배열에 할당 할 수없는 Varaint array을 반환하기 때문에

은 BTW
Dim data1() as long 
data1 = Array(1, 2, 3, 4, 5) 

이 작동하지 않습니다.

관련 문제