2016-07-04 3 views
0

VBA를 처음 사용하므로 저와 함께주십시오. 이 코드를 사용하는 데 어려움을 겪고 있습니다.배열에 변수를 저장하는 방법 - VBA

Dim arrayAC() As Variant 
Dim arrayW() As Variant 
Dim DD As date 
Dim LrowAC As Integer 
Dim LrowW As Integer 
LrowAC = Worksheets("A").Columns(29).Find(What:="*", LookIn:=xlValues, SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row 
LrowW = Worksheets("A").Columns(23).Find(What:="*", LookIn:=xlValues, SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row 
ReDim arrayAC(1 To LrowAC + 1) 
ReDim arrayW(1 To LrowW + 1) 

For i = 3 To LrowAC + 1 
    arrayAC(i) = Worksheets("A").Cells(i, 29) 
Next i 
i = 3 

For h = 3 To LrowW + 1 
    arrayW(h) = Worksheets("A").Cells(h, 23) 
Next h 
h = 3 

For i = 3 To LrowAC + 1 
For h = 3 To LrowW + 1 
If arrayAC(i) = arrayW(h) Then 
DD = arrayAC(i) 
Worksheets("A").Cells(i, "X").Value = DD 
end if 
next h 
next i 

DD 값을 얻지 못했습니다! 나중에 엑셀 시트에 인쇄 될 DD 변수에 arrayAC (i)를 저장하는 방법을 모르겠습니다. 고마워,

+0

'DD'란 무엇입니까? 코드에 선언하지 마십시오. 제공했습니다. 할당 :'DD = arrayAC (i)'- 적중 여부를보기 위해 그 줄에 중단 점을 넣었습니까? –

+0

나는 그것을 다음과 같이 가정했다. Dim DD As date – Zapata

+0

나의 실수는 처음에는 그것을 보지 못했다. 그래도 디버그 했니? –

답변

1

나는 배열이 셀 범위를 말하는 것 같았습니까? 그렇다면 '변형'으로 변환하는 것이 가장 쉽습니다. , 다른 무언가가 당신이 메시지 상자가 표시 해달라고하면

Sub MatchData() 
    Dim ArrayAC As Variant, ArrayW As Variant, i As Long, j As Long, k As Long 

    ArrayAC = ThisWorkbook.Sheets("AC").Range("A2:A250").Value 
    ArrayW = ThisWorkbook.Sheets("W").Range("A2:A250").Value 

    For i = 1 To UBound(ArrayAC) 
     For j = 1 To UBound(ArrayW) 
      If ArrayAC(i, 1) = ArrayW(j, 1) Then 
       DD = ArrayAC(i,1) 
      End If 

     Next 
    Next 



End Sub 
+0

아니요. 내 문제인 1D를 찾고 있습니다! 이것은 끝에 하나의 셀을 채우기로되어 있습니다. – Zapata

+0

@Zapata는 기능적으로 중요하지 않습니다. 기본적으로 셀 범위는 2d입니다 (예 : * rows * and * columns *). 이중 'Transpose'작업을 수행하여 1d로 강제 변환 할 수 있지만, 필요하다. –

0

이렇게, 당신은 메시지 상자가 표시되는 경우, 값은 열 X.에 기록되어야한다 : 그들은되는 2 차원 배열을 결국 당신은을 통해 검색 할 수 있습니다 잘못된 가정. 메시지 상자가 두 번 이상 표시되면 x 열의 셀을 덮어 쓸 수 있으므로 추가 디버깅이 필요합니다 ...

For i = 3 To LrowAC + 1 

    For h = 3 To LrowW + 1 

     If arrayAC(i) = arrayW(h) Then 

      'DD = arrayAC(i) 
      msgbox arrayAC(i) 
      Worksheets("A").Cells(i, "X").Value = arrayAC(i) 

     end if 

    Next 

Next 
관련 문제