Fehler im Code

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
Bild

Betrifft: Fehler im Code
von: Müller C.
Geschrieben am: 21.05.2015 09:36:20

Hallo zusammen,
ich habe folgenden Code:

Sub Leerzeilen_löschen()
  'Leerzeilen werden gelöscht wenn A und B leer und zum Schluss werden die Daten nach Spalte B ( _
Pos) sortiert
  Dim s 'für Inputbox Abfrage Sortierspalte
  Dim Datenmatrix_DB_neu As Worksheet
  Dim iCalc As Long
  On Error GoTo ErrExit
  Set Sh_neue_Zustandsbeschreibungen = Sheets("Datenmatrix_DB_neu") 'Deine Tabelle _
    anpassen
  With Application
    iCalc = .Calculation
    .ScreenUpdating = False
    .EnableEvents = False
    .Calculation = xlCalculationManual
  End With
  With Sh_neue_Zustandsbeschreibungen
    .Unprotect
    With .UsedRange.Columns(.UsedRange.Columns.Count).Offset(0, 1)
      .FormulaR1C1 = "=IF(AND(ROW()>1,RC1&RC2=""""),TRUE(),ROW())"
      Sh_neue_Zustandsbeschreibungen.UsedRange.sort .Cells(1, 1), xlAscending, , , , , , xlNo
      On Error Resume Next
      .SpecialCells(xlCellTypeFormulas, 4).EntireRow.Delete
      On Error GoTo ErrExit
      .EntireColumn.Delete
    End With
    
  End With
ErrExit:
  With Application
    .ScreenUpdating = True
    .EnableEvents = True
    .Calculation = iCalc
  End With
  Set Datenmatrix_DB_neu = Nothing
  
  
  s = InputBox("Sortierspalte?")
  Select Case s
  Case "A" To "D", "a" To "d"
  Range("A3:D500").sort key1:=Range(s & "4"), order1:=xlAscending, Header:=xlYes 'oder xlNo =  _
Sortiern nach Spalte B
  End Select
End Sub
hier werden Daten aus einem Tabellenblatt un das nächste kopiert, dort die Leerzeilen gelöscht und nach einer Auswahlspalte sortiert.
Funktioniert auch soweit.
Nur folgendes Problem. Mein Datenbereich erstreckt sich eigentlich nur von A:D (Zeileanzahl beliebig)
In Spalte E stehen beispielsweise naturgemäß Formeln.
Daher möchte ich den Löschbereich auf A:D begrenzen.
Kann mir dazu jmd die Änderung im Code sagen? Habe den code nicht selbst geschrieben und in VBA eine absolute 0!
Besten Dank!
Gruss

Bild

Betrifft: AW: Fehler im Code
von: Frank
Geschrieben am: 22.05.2015 13:59:51
Hallo,
das ist nicht so einfach... Hier

      On Error Resume Next
      .SpecialCells(xlCellTypeFormulas, 4).EntireRow.Delete
      On Error GoTo ErrExit
      .EntireColumn.Delete

werden ganze Zeillen gelöscht. Das führt dazu, dass die weiter unten stehenden Zeilen automatisch nach oben rücken (inklusive Zellbezügen in Formeln der restlichen Zeilen). Machst Du das nur mit einzelnen Zellen,müsste definiert werden, was mit den restlichen Zellen dieser Zeile passieren soll - respektive den Zellen der restlichen Spalte ( nach links/oben verschieben). Dann hast Du ggf. ganz schnell ein Problem mit den Zellbezügen der Formeln. Einfach mal per Hand ausprobieren und gucken, was passiert. Noch besser, das Ganze mit Makro aufzeichnen. Wenn das richtige passiert, hast Du gleich ein Codegerüst, auf dem Du aufbauen kannst.
Oder soll etwa nur der Inhalt gelöscht werden, die Zellen aber bestehen bleiben?
Grüsse,
Frank

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Fehler im Code"