2016-06-21 2 views
0

시트의 셀 줄을 사용자 정의 폼의 여러 열 목록 상자에 추가하려고합니다. 시트의 열 수 또한 다양합니다. '유형 불일치'오류가 계속 발생합니다. 첫 번째 .AddItem 줄에서 발생하는 코드를 살펴 보았습니다. .AddItem으로 여러 항목을 추가 할 수 없다는 것을 알았습니다. 이 작업을 수행 할 다른 방법이 있습니까? 나는 VBA에 아주 새로운 사람입니다. 당신의 도움을 주셔서 감사합니다!VBA 오류 13 형식이 일치하지 않습니다.

Private Sub GenerateButton_Click() 
    Dim i As Long, counter As Long, counter_RA As Long, x As Integer 
    Dim LastColRA As Long, LastColCP As Long 


    LastColRA = Sheet1.Cells(1, Columns.Count).End(xlToLeft).Column 
    LastColCP = Sheet2.Cells(1, Columns.Count).End(xlToLeft).Column 


    'Check to make sure that enough items were selected 
    For x = 0 To ListBox2.ListCount - 1 
    If ListBox2.Selected(x) Then 
     counter_RA = counter_RA + 1 
     With TabData.DataTable 
     .AddItem Sheets(Sheet1).Range(Cells(x + 2, 1), Cells(x + 2, LastColRA)).Text 
     End With 
    End If 
    Next x 

    For i = 0 To ListBox1.ListCount - 1 
    If ListBox1.Selected(i) Then 
     counter = counter + 1 
     With TabData.DataTable 
     .AddItem Sheets(Sheet2).Range(Cells(i + 2, 1), Cells(i + 2, LastColCP)).Text 
     End With 
    End If 
    Next i 
End Sub 

답변

1

몇 가지 문제가 있습니다. 첫째, 복수 셀 범위의 Text 속성을 사용하는 경우 모든 셀에 동일한 텍스트가 포함되어 있지 않으면 Null을 반환합니다. 둘째,주의, 당신은 AddItem를 사용하여 한 번에 배열을 추가 할 수 없습니다 - 당신이 지수는 0 기반 것을 기억하고, 다음 루프는 열을 채울 항목을 추가해야합니다 : 여기

With TabData.DataTable 
    .AddItem 
    For n = 1 to LastColRA 
     .List(.ListCount - 1, n - 1) = Sheet1.Cells(x + 2, n).Value 
    next n 
End With 

이 버전의 그 열 10 개 이상을 사용할 수 있습니다.

Dim i As Long, counter As Long, counter_RA As Long, x As Long 
Dim LastColRA As Long, LastColCP As Long 
Dim vList() 


LastColRA = Sheet1.Cells(1, Columns.Count).End(xlToLeft).Column 
LastColCP = Sheet2.Cells(1, Columns.Count).End(xlToLeft).Column 


'Check to make sure that enough items were selected 
For x = 0 To ListBox2.ListCount - 1 
    If ListBox2.Selected(x) Then 
     counter_RA = counter_RA + 1 
     ReDim Preserve vList(1 To LastColRA, 1 To counter_RA) 
     For i = 1 To LastColRA 
      vList(i, counter_RA) = Sheet1.Cells(x + 2, i).Value 
     Next i 
    End If 
Next x 
For x = 0 To ListBox1.ListCount - 1 
    If ListBox1.Selected(x) Then 
     counter_RA = counter_RA + 1 
     ReDim Preserve vList(1 To LastColRA, 1 To counter_RA) 
     For i = 1 To LastColRA 
      vList(i, counter_RA) = Sheet2.Cells(x + 2, i).Value 
     Next i 
    End If 
Next x 

With TabData.DataTable 
    .ColumnCount = LastColRA 
    .Column = vList 
End With 
+0

답장을 보내 주셔서 감사합니다. .List 줄에 대해 오류 13이 다시 나타납니다. – Liz

+0

몇 개의 컬럼이 있습니까? AddItem으로 10 개로 제한됩니다. 또한 셀에 오류 값이 있습니까? – Rory

+0

지금부터는 내가 다루고있는 5 개의 열이 있습니다. 그러나 앞으로이 도구를 더 많이 사용할 수 있기를 희망합니다. 오류 값이 없습니다. 모든 열은 텍스트 만 포함합니다. 도와 줘서 고마워. – Liz

관련 문제