2014-03-31 2 views
1

for 루프에 채워지는 셀 항목 (예 : A6, B6 등)의 배열을 만들려고합니다.For 루프 VBA에서 배열이 채워지지 않습니다.

배열

MyArray 

은 항상 비어 있고 그 for 루프 내에서 채워되지 않는 이유를 알아낼 수 없습니다 그러나. 아래 코드는 (코드의 다른 부분을 다루는 코드의 적절한 부분)입니다.

Sub ListSheets() 

    ' Defining all variables (objects) used within the code, establishing their 
    'classes         

    Dim i As Integer 
    Dim array_size As Integer 
    Dim MyArray() As String 

    array_size = 26 
    ReDim MyArray(array_size) As String 

    For intLoop = 1 To 26 
    MyArray(intLoop, 1) = Chr$(64 + intLoop) + "6" 
    Next 

    Set CopyFrom = MyArray 
    Sheets("vba_deposit").Range("A1").Resize(CopyFrom.Rows.Count).Value = CopyFrom.Value 

    End Sub 

아이디어가 있으십니까?

미리 감사드립니다.

+0

'경우 MyArray (intLoop, 1) = ...'->'경우 MyArray (intLoop) = ...' –

+0

안녕하세요 simoco, 나는 "1"을 권고했습니다.하지만 여전히 빈 MyArray가 생겨서 "Object Required"컴파일 오류가 발생했습니다. 확인이 필요한 유일한 라인은 무엇입니까? 당신의 도움을 주셔서 감사합니다. – vbastrangledpython

+0

필자의 의견이 바뀌었고,'MyArray (intLoop, 1)'을 사용했지만 ReDim MyArray (1 to array_size, 1 To 1)를 사용하는 것이 더 낫습니다. –

답변

2

이것보십시오 : MyArray(intLoop, 1)이 좋았다 사용

Sub ListSheets() 
    Dim i As Integer 
    Dim array_size As Integer 
    Dim MyArray() As String 

    array_size = 26 
    ReDim MyArray(1 To array_size, 1 To 1) 

    For intLoop = 1 To 26 
     MyArray(intLoop, 1) = Chr$(64 + intLoop) + "6" 
    Next 

    Sheets("vba_deposit").Range("A1").Resize(UBound(MyArray)).Value = MyArray  
End Sub 

첫 번째 생각 -이 경우는 수에 제한이 있기 때문에 항상 작동하지 Transpose을 (사용할 필요가 없기 때문에 배열의 요소) 여기에 : Range(...).Value = MyArray. 코드에서 그러나 나는이 만든 작은 변화 : 2D로

  • ReDim을 배열 : 직접 ReDim MyArray(1 To array_size, 1 To 1)
  • 사용 Range(...).Value = MyArray
1
Sub ListSheets() 

' Defining all variables (objects) used within the code, establishing their 
'classes 

Dim i As Integer 
Dim array_size As Integer 
Dim MyArray() As String 

array_size = 26 
ReDim MyArray(array_size) As String 

For intloop = 1 To 26 
MyArray(intloop) = Chr$(64 + intloop) + "6" 
Sheets(1).Range("A1").Offset(intloop - 1).Value = MyArray(intloop) 
Next 
'An array is not an object, you can't use SET with them. 
'Your array is 1-dimensional, MyArray(1,1) won't work as that's 2-dimensional, just 
'MyArray(1) = "whatever1"  MyArray(2) = "whatever2" etc. etc. 
End Sub 
+0

많은 도움을 주신 데 대해 감사드립니다. – vbastrangledpython

관련 문제