Microsoft Excel

Herbers Excel/VBA-Archiv

Array Problem

Betrifft: Array Problem von: Stefanie
Geschrieben am: 09.09.2014 12:04:43

Hallo ihr lieben,

und zwar habe ich ein Array (arr) der die Zeile_A (z.B. Zeile 10 ist aber variabel)
mit allen vorhandenen Spalten enthält.

Zum Beispiel: arr (10,2), (10,3), (10,4) usw. so sollte dieser aussehen.
Jetzt möchte ich diesen durchlaufen und wenn ein "x" gefunden wird soll Cells(3, lSpalte + 1).Copy kopiert werden (weil dort der passende Text drin steht.

Leider klappt hier irgend etwas nicht mit dem durchlaufen. Mein Programm macht dies einmal korrekt und springt dann aber nicht in Next lSpalte und Zeile.

Ich weiß einfach nicht woran es liegt. Kann mir jemand helfen? Bitte! Vielen Dank

 arr = Range(Cells(Zeile_A, 2), Cells(Zeile_A, Columns.Count).End(xlToLeft))
                                  
                                   
For lZeile = Zeile_A To UBound(arr) 'alle Zeilen
  For lSpalte = 1 To UBound(arr, 1) 'alle Spalten
    If arr(lZeile, lSpalte) = "x" Then
      Cells(3, lSpalte + 1).Copy
      Sheets("ArbeitsblattXY").Select
      Cells(b, y).Select
      ActiveSheet.Paste
      Cells(b, y).WrapText = True
      ActiveSheet.Range("A2:ED" & lSpalte).Rows.EntireRow.AutoFit
      Sheets("ArbeitsblattZ").Select
      Cells(1, lSpalte + 1).Copy
      Sheets("Risikobeurteilung").Select
     'Nächste freie Spalte ermitteln
      Cells(4, IIf(IsEmpty(Cells(1, Columns.Count)), _
      Cells(4, Columns.Count).End(xlToLeft).Column, Columns.Count) + 1).Select
      aktuelle_spalte_annex = ActiveCell.EntireColumn.Column
      Cells(b, aa).Select
      ActiveSheet.Paste
      Sheets("G0SA").Select
     End If
   Next lSpalte
 Next lZeile

  

Betrifft: ich hab dir doch schon mal gesagt,... von: Rudi Maintaire
Geschrieben am: 09.09.2014 12:17:13

Hallo,
dass ein Array, das aus einem Bereich gebildet wird, immer bei (1,1) beginnt.

Gruß
Rudi


  

Betrifft: AW: ich hab dir doch schon mal gesagt,... von: Stefanie
Geschrieben am: 09.09.2014 12:26:11

das mag sein aber es funktioniert trotzdem nicht.
Diese blöden Arrays...
:-(


  

Betrifft: Diese blöden Arrays... von: Rudi Maintaire
Geschrieben am: 09.09.2014 12:50:08

Hallo,
was können die für deine Fehler?

For lSpalte = 1 To UBound(arr, 1) 'alle Spalten

durchläuft die Spalten nur von 1 bis zur höchsten Zeile!!! In deinem Fall 1.
Wenn du alle Spalten durchlaufen willst, solltest du auch deren Anzahl ermitteln.
Ebenso solltest du bei den Zeilen mit 1 beginnen und nicht mit der nicht vorhandenen 10ten.
  For lZeile = 1 To UBound(arr, 1) 'alle Zeilen/ 1.Dimension des Arrays
    For lSpalte = 1 To UBound(arr, 2) 'alle Spalten/ 2.Dimension des Arrays
Zum Rest des Codes: Select ist in VBA meistens überflüssig, da man Objekte direkt ansprechen kann.
z.B anstatt
        Cells(3, lSpalte + 1).Copy
        Sheets("ArbeitsblattXY").Select
        Cells(b, y).Select
        ActiveSheet.Paste

einfach
        Cells(3, lSpalte + 1).Copy Sheets("ArbeitsblattXY").Cells(b, y)
Gruß
Rudi


 

Beiträge aus den Excel-Beispielen zum Thema "Array Problem "