2016-06-24 1 views
0
Dim j as integer 
Dim b as integer 
Dim arrayMaterial as string 
Dim array1() 
For j=1 to numrows-1 
    For i = 1 To 3 
     ReDim Preserve array1(0 To 3, 0 To numrows) 
     array1(i, j) = Cells(j + 1, i + 6) 
    Next 
Next 
    For j = 1 To numrows - 1 
     For b = 1 To 3 
      arrayMaterial = array1(b, j) 
     Next 
    MsgBox Join(arrayMaterial, " ") 

결합 된 문자열에 배열 값을 저장할 수 있기를 원합니다. 계속 오류 메시지가 나타납니다. 어떤 제안?VBA 문자열 배열

+1

달성하고자하는 것을 잘 모르는 사람. 아마도 이것일까요? 'arrayMaterial = arrayMaterial & ""& array1 (b, j)'입니다. 그리고 그 뒤 'MsgBox arrayMaterial'. – CMArg

+0

오류 메시지를 게시하고 원하는 결과를 설명하면 도움이 될 수 있습니다. – Shaggy

+0

@aggieman Vityata의 답변이나 의견은 귀하의 문제를 해결하는 데 도움이됩니까? 예의는 아무런 해를 입지 않을 것입니다 ... – CMArg

답변

0

실마리가 없습니다. 다음에 변수를 놓치고 변수가 정의되지 않았습니다. arraymaterial은 문자열이 아니라 배열입니다. 어쨌든 msgbox에 양방향 배열을 넣으려면 코드를 사용하여 다음을 수행하는 것이 좋습니다.

Option Explicit 
Sub TestMe() 
    Dim j As Long 
    Dim b As Long 
    Dim arrayMaterial As String 
    Dim numrows As Long: numrows = 5 
    Dim i As Long 

    Dim array1() As Long 

    For j = 1 To numrows - 1 
     For i = 1 To 3 
      ReDim Preserve array1(0 To 3, 0 To numrows) 
      array1(i, j) = Cells(j + 1, i + 6) 

     Next i 
    Next j 
    MsgBox WriteArrayToImmediateWindow(array1) 
End Sub 

'taken from SO and modified a bit 
Function WriteArrayToImmediateWindow(arrSubA As Variant) As String 

    Dim rowString As String 
    Dim iSubA As Long 
    Dim jSubA As Long 

    rowString = "" 

    For iSubA = 1 To UBound(arrSubA, 1) 
     rowString = arrSubA(iSubA, 1) 
     For jSubA = 2 To UBound(arrSubA, 2) 
      rowString = rowString & "," & arrSubA(iSubA, jSubA) 
     Next jSubA 
     WriteArrayToImmediateWindow = WriteArrayToImmediateWindow & vbCrLf & rowString 
    Next iSubA 

End Function