2017-09-25 4 views
1

Ich möchte verschiedene Werte (Text) in 3 verschiedenen Bereichen herausfinden. Ich denke, ich habe einen Weg online gefunden, aber es gibt mir einen Fehler.Excel VBA Zählen verschiedene Werte aus mehreren Bereichen

Hier sind die Codes;

Dim MyDict As Object, MyCols As Variant, OutCol As String, LastRowXY_2 As Long 
Dim XY_A As Variant, I_XY As Long, MyData_XY As Variant 

Set MyDict = CreateObject("Scripting.Dictionary") 
MyCols = Array("P", "S", "V") 
OutCol = "AN" 

For Each XY_A In MyCols 
    LastRowXY_2 = Worksheets(Ders_Sheet_Adi).Cells(Rows.Count, XY_A).End(xlUp).Row 
    MyData_XY = Worksheets(Ders_Sheet_Adi).Range(XY_A & "22:" & XY_A & LastRowXY_2).Value 
    For I_XY = 1 To UBound(MyData_XY) 
     If MyData_XY(I_XY, 1) <> "" Then MyDict(MyData_XY(I_XY, 1)) = 1 
    Next I_XY 
Next XY_A 

Worksheets(Ders_Sheet_Adi).Range(OutCol & "1").Resize(MyDict.Count, 1).Value = WorksheetFunction.Transpose(MyDict.keys) 

Beim zweiten Lauf von "XY_A", gibt MyData_XY einen "Type-Mismatch" Fehler.

Ich kann jede Art von Idee verwenden.

+0

Prüfung im Debug-Modus in der zweiten Schleife, was ist der Wert von 'LastRowXY_2' –

+0

Bei der zweiten Schleife Wert von LastRowXY_2 ist„22“ – Bildircin13

+0

so Jetzt debuggen und sehen, was Sie bekommen (im Debug-Modus) für 'MyData_XY' (Empty) –

Antwort

1

Option 1:

Wechsel:

Worksheets(Ders_Sheet_Adi).Range(OutCol & "1").Resize(MyDict.Count, 1).Value = WorksheetFunction.Transpose(MyDict.keys)

zu

Range(OutCol & "1").Resize(1, 1).Value = WorksheetFunction.Transpose(2)

und prüfen, ob es jetzt funktioniert. Wenn dies der Fall ist, haben Sie in MyDict keine Werte, daher wird ein Fehler ausgegeben.

Option 2: Was denken Sie, MyData_XY ist? Ein Bereich, ein Array? Versuchen Sie es zu nennen wie diese ->MyData_XY(1)(1,1) anstelle dieser ->MyData_XY(1,1)

+0

Thx für die Antwort. Leider hatte die erste Option keine Wirkung, weil ich den Fehler vor dieser Zeile erhalte. Und ich konnte die zweite Option nicht verstehen, fürchte ich. – Bildircin13

+0

@ Bildircin13 - zu Option 2 - Ihr Array hat Arrays in ihm. Sie meinen es so -> 'MyData_XY (1,1)'. Sie sollten es so bezeichnen "MyData (1) (1,1)" – Vityata

Verwandte Themen