34 Aufrufe
Gefragt in Tabellenkalkulation von
Guten Abend,

die Array soll aus einer Tabelle Master Spalte Q befüllt werden. Leider bekomme ich ein Automatisierungsfehler. Wo steckt der Teufel?

Sub ArrayListFuellen()
    Dim ArrLst As Object
    Dim lngZeile As Long
    Dim lngZeileMax As Long
    Dim p
    
    Set ArrLst = CreateObject("System.Collections.ArrayList")
    With Master
    
    lngZeileMax = .Range("Q" & .Rows.Count).End(xlUp).Row
    'Array Füllen
    For lngZeile = 2 To lngZeileMax
    ArrLst.Add .Range("Q" & lngZeile).Value
    
    Next lngZeile
   
    End With
End Sub

Könnt Ihr mir helfen ?

Viele Grüße

Rudol

2 Antworten

0 Punkte
Beantwortet von
 
Beste Antwort

Hallo Rudol, 

es gibt viele Arten ein Array zu füllen. Diese hier ist mir neu und nicht wirklich notwendig. Laut dieser Seite ist die Zeile Set ArrLst = CreateObject("System.Collections.ArrayList") richtig. Jedoch erhalte auch ich einen Automatisierungsfehler. Muss es denn unbedingt eine ArrayList sein? Das gute alte Collection Objekt tuts doch auch.

Sub ArrayListFuellen()
    Dim ArrLst As New Collection
    Dim lngZeile As Long
    Dim lngZeileMax As Long
    Dim p
    
    Set Master = Sheets("Master") 'Diese Zeile zum Setzen der Variablen Master hat gefehlt
                                  'wenn du Master bereits anderweitig gesezt hast kannst du
                                  'auf diese Zeile auch verzichten.
    With Master
    
    lngZeileMax = .Range("Q" & .Rows.Count).End(xlUp).Row
    'Array Füllen
    For lngZeile = 2 To lngZeileMax
    ArrLst.Add .Range("Q" & lngZeile).Value
    
    Next lngZeile
     
    End With    

  MsgBox ArrLst(5) 'Eine Zeile zum Auswerten hat auch gefehlt.
    
End Sub

oder du füllst einfach ein normales Array. Das geht u.a. zum Beispiel so:

Sub ArrayFuellen()

  Dim arr As Variant
  
  Set Master = Sheets("Master") 'Diese Zeile zum Setzen der Variablen Master hat gefehlt
                                  'wenn du Master bereits anderweitig gesezt hast kannst du
                                  'auf diese Zeile auch verzichten.
  With Master
    
  lngZeileMax = .Range("Q" & .Rows.Count).End(xlUp).Row
  arr = .Range("Q2:Q" & lngZeileMax)
  arr = Application.Transpose(arr)
    
  End With
   
  MsgBox arr(6) 'Eine Zeile zum Auswerten
   
End Sub

Gruß Mr. K.

0 Punkte
Beantwortet von
Hallo Mr. K,

danke, du hast mir mit deinem Beispiel sehr geholfen,

Danke

VG, Rudolf
...