Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA, Abfrage Zeile leer dann ...

VBA, Abfrage Zeile leer dann ...
03.05.2007 12:47:00
Peter
Hallo alle zusammen,
in meinem Code habe ich versucht folgendes WENN DANN Problem zu lösen.
Wenn die Zellen der Zeile unter der aktiven Zeile leer sind soll nichts passieren, wenn die Zelle in Spalte A der Zeile über der aktiven Zeile leer ist soll nichts passieren, ansonsten bla bla.
Mein Code:
If ActiveCell.Row - 1 "" Then 'Abfrage ob unter aktiver Zeile eine leere Zeile ist
a = Cells(65536, 1).End(xlUp).Row - ActiveCell.Row + 1
For Each cell In Rows(ActiveCell.Row - 1).SpecialCells(xlCellTypeFormulas, 23)
cell.Copy Destination:=cell.Offset(1, 0).Resize(a, 1)
Next
End If
If ActiveCell.Row + 1.Column = 1 "" Then 'Abfrage ob über der aktiver Zeile in Spalte A eine Leerezelle ist
a = Cells(65536, 1).End(xlUp).Row - ActiveCell.Row + 1
For Each cell In Rows(ActiveCell.Row - 1).SpecialCells(xlCellTypeFormulas, 23)
cell.Copy Destination:=cell.Offset(1, 0).Resize(a, 1)
Next
Else
a = Cells(65536, 1).End(xlUp).Row - ActiveCell.Row + 1
For Each cell In Rows(ActiveCell.Row - 1).SpecialCells(xlCellTypeFormulas, 23)
cell.Copy Destination:=cell.Offset(1, 0).Resize(a, 1)
Next
End If
Kann mir jemand helfen?
Danke im Voraus
Grüße aus Berlin

Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA, Abfrage Zeile leer dann ...
03.05.2007 12:53:00
Matthias
Hallo Peter,
so bekommst du die Anzahl der nichtleeren Zellen in Zeile [z]:

WorksheetFunction.CountA(Rows(ActiveCell.Row + 1))
WorksheetFunction.CountA(Rows(ActiveCell.Row - 1))


Wenn der Ausdruck also 0 ist, ist die Zeile leer.
Konnte ich helfen?
Gruß Matthias

Anzeige
AW: VBA, Abfrage Zeile leer dann ...
03.05.2007 13:15:08
Peter
Hallo Matthias,
der Code bleibt bei folgender Stelle hägen?!
cell.Copy Destination:=cell.Offset(1, 0).Resize(a, 1)
Mein Code:
If WorksheetFunction.CountA(Rows(ActiveCell.Row + 1)) > 0 Then 'Abfrage ob über aktiver Zeile eine leere Zeile ist
a = Cells(65536, 1).End(xlUp).Row - ActiveCell.Row + 1
For Each cell In Rows(ActiveCell.Row - 1).SpecialCells(xlCellTypeFormulas, 23)
cell.Copy Destination:=cell.Offset(1, 0).Resize(a, 1)
Next
~f~End If
~f~If WorksheetFunction.CountA(Rows(ActiveCell.Row - 1)) > 0 Then 'Abfrage ob unter aktiver Zeile eine leere Zeile ist
a = Cells(65536, 1).End(xlUp).Row - ActiveCell.Row + 1
For Each cell In Rows(ActiveCell.Row - 1).SpecialCells(xlCellTypeFormulas, 23)
cell.Copy Destination:=cell.Offset(1, 0).Resize(a, 1)
Next
End If
Wo ist der Fehler?
Gruß
Peter

Anzeige
AW: VBA, Abfrage Zeile leer dann ...
03.05.2007 13:18:00
Matthias
Welcher Fehler kommt denn?
Gruß Matthias

AW: VBA, Abfrage Zeile leer dann ...
03.05.2007 13:29:00
Peter
Hallo Matthias,
folgende Fehlermeldung:
Laufzeitfehler '1004'
Anwendungs- oder Objektdefinierter Fehler
Gruß
Peter

AW: VBA, Abfrage Zeile leer dann ...
03.05.2007 14:38:00
Peter
Hallo Matthias,
ich könnte das Problem lösen.
Danke Dir.
Grüße aus Berlin

Anzeige
AW: VBA, Abfrage Zeile leer dann ...
03.05.2007 14:39:48
Matthias
Hallo Peter,
freut mich; fürs Archiv wäre es nicht schlecht, wenn du die Lösung hier kurz schreibst.
Gruß Matthias

AW: VBA, Abfrage Zeile leer dann ...
03.05.2007 15:02:40
Peter
Hallo,
ich habe einfach gesagt das aus der 2. Reihe über der aktiven Zeile bis ans Ende der Tabelle kopiert wird. Wenn ich die letzte Zeile in der Tabelle gelöscht habe, hat Excel immer noch die Möglichkeit wenigstens in eine Zeile bis ans Ende der Tabellein zu kopieren. Vorher war die aktive Zeile die erste Leerzeile unter dem Tabellenende und Excel versuchte die Formeln aus der Zeile darüber (Tabellenende) in die Leerzeile zu kopieren. Der Code sagt aber kopiere bis ans Tabellenende, man ist aber schon am Ende!
mein neuer Teilcode (ohne If CountA EndIf etc.):
a = Cells(65536, 1).End(xlUp).Row - ActiveCell.Row + 2
For Each cell In Rows(ActiveCell.Row - 1).SpecialCells(xlCellTypeFormulas, 23)
cell.Copy Destination:=cell.Offset(1, 0).Resize(a, 1)
Next
mein ganzer Code:

Private Sub Zeile_löschen_Click()
Dim cell As Range
Dim a As Long
SpeedUp (True)
ActiveSheet.Unprotect Password:="Peter"
If ActiveCell.Row  6 Then
If ActiveCell.Column = 1 And IsDate(ActiveCell) Then 'Zelle in Spalte A aktiviert
If MsgBox("Wollen Sie diese Zeile löschen?", vbOKCancel + _
vbQuestion, "Achtung!") = 1 Then
ActiveCell.EntireRow.Delete
a = Cells(65536, 1).End(xlUp).Row - ActiveCell.Row + 2
For Each cell In Rows(ActiveCell.Row - 1).SpecialCells(xlCellTypeFormulas, 23)
cell.Copy Destination:=cell.Offset(1, 0).Resize(a, 1)
Next
End If
Else
MsgBox "Sie haben keine Zeile markiert!"
End If
Else
MsgBox "Sie können diese Zeile nicht löschen!"
End If
ActiveSheet.Protect Password:="Peter"
SpeedUp (False)
End Sub


Grüße aus Berlin

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige