Daten aus Excel Tabelle extrahieren

  • Ersteller Ersteller boxleitnerb
  • Erstellt am Erstellt am
B

boxleitnerb

Gast
Excel-Makro zum Einfügen von Zeilen/Werten funktioniert nicht

Ich habe folgende Tabelle mit SLI-Bits für verschiedene Spiele (beispielhaft):



Ich will, damit ich die Liste nachher ordentlich weiterverarbeiten kann, unter jedem Spiel Zeilen für DX10 und DX9 Bits stehen haben. Also 3 Zeilen pro Spiel, dann Leerzeile und dann der nächste Eintrag.

Spiel 1 hat nur Bits für DX10, Spiel 2 nur für DX9, Spiel 3 für DX9 und DX10 und Spiel 4 hat gar keine Bits.

Folgendes Makro hab ich geschrieben:

Code:
Public Sub InsertBlankRow_DX9_DX10()
    Dim Last As Long
    Dim Row As Long
    Dim TextPosProf As Integer

    Application.ScreenUpdating = False
    Last = IIf(IsEmpty(Range("B65536")), Range("B65536").End(xlUp).Row + 1, 65536)
    
      For Row = Last To 1 Step -1
        TextPosProf = InStr(1, Cells(Row, 1), "Profile")
      
        If TextPosProf = 1 Then
           If (Cells(Row + 1, 1)) = "DX10" And (Cells(Row + 2, 1)) = "" Then
              Rows(Row + 2).Select
              Selection.Insert
              Cells(Row + 2, 1).Value = "DX9"
              Cells(Row + 2, 2).Value = "n/a"
           End If
           
           If (Cells(Row + 1, 1)) = "DX9" And (Cells(Row + 2, 1)) = "" Then
              Rows(Row + 1).Select
              Selection.Insert
              Cells(Row + 1, 1).Value = "DX10"
              Cells(Row + 1, 2).Value = "n/a"
           End If
           
           If (Cells(Row + 1, 1)) = "" Then
              Rows(Row + 1).Select
              Selection.Insert
              Selection.Insert
              Cells(Row + 1, 1).Value = "DX10"
              Cells(Row + 1, 2).Value = "n/a"
              Cells(Row + 2, 1).Value = "DX9"
              Cells(Row + 2, 2).Value = "n/a"
           End If
           
        End If
        
      Next
    Application.ScreenUpdating = True
End Sub

Für Spiel 1-3 klappt das auch wunderbar. Es wird eine Zeile (Spiel 1 und 2) bzw. keine Zeile (Spiel 3) mit den Einträgen hinzugefügt. Bei Spiel 4 aber passiert etwas, was ich partout nicht verstehe:

Sind die Zellen in dem blau markieren Bereich nicht leer, funktioniert das Makro. Sind sie aber leer, klappt es nicht! Ich brauch nur irgendwas da einfügen, egal wo - ein einzelnes Zeichen reicht - und es klappt. Warum ist das so?
 
Zuletzt bearbeitet:
Moin,,

warum das so ist? Ganz einfach, weil dann
Code:
If (Cells(Row + 1, 1)) = "" Then
nicht zutrifft! Dieser Block wird nur ausgeführt, wenn in Spalte B etwas steht, also nicht "" ist.

Als erstes würde ich die Variable "Row" umbenennen, das ist nämlich ein reserviertes Wort der VBA-Sprache und kann die eigenartigsten Dinge geschehen lassen. In meinem nächsten Beispiel verwende ich xRow als Variable.

Und ganz nebenbei: Standardmäßig werden Zeilen so oder ähnlich eingefügt:
Code:
Sub ZeileEinfuegen()
   Dim xRow As Long
   xRow = 5
   ActiveSheet.Rows(xRow + 2).Insert
End Sub
... denn jedes SELECT kostet Zeit und ist in über 95% aller Fälle überflüssig.

Ansonsten: Stelle einfach einmal diese Muster-Date zur Verfügeung (als datei), dann sehen wir weiter.
 
Zurück
Oben