Anzeige
Archiv - Navigation
864to868
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
864to868
864to868
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

VBA Zeile löschen, Formeln übernehmen

VBA Zeile löschen, Formeln übernehmen
26.04.2007 11:26:52
Peter aus Berlin

Hallo,
ich habe folgendes Problem.
Über ein Commandbutton soll folgendes Makro ablaufen.
Der Code bleibt aber bei 'cell.Copy Destination:=cell.Offset(1, 0).Resize(a, 1) hängen.
Keine Ahnung warum.
Kann mir jemand helfen?


Private Sub Zeile_löschen_Click()
Dim cell As Range
Dim a As Long
SpeedUp (True)
ActiveSheet.Unprotect Password:="Peter"
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 + 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
Else
MsgBox "Sie haben keine Zeile markiert!"
End If
ActiveSheet.Protect Password:="Peter"
SpeedUp (False)
End Sub


ganze Datei: https://www.herber.de/bbs/user/42037.xls
Danke im Voraus
Grüße aus Berlin

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Problem erkannt, Code läuft nicht!
26.04.2007 18:26:38
Peter aus Berlin
Hallo,
ich habe das Problem erkannt.
Wenn ich die letzte ausgefüllte Zeile in der Tabelle lösche ist es unsinnig dann wieder Formeln in diese zu kopieren.
Ich habe versucht eine Abfrage einzubauen die kontrolliert ob unter der markierten Zeile eine leere Zeile ist oder nicht. Der Code funktioniert aber nicht. Wie ist es richtig?


Private Sub Zeile_löschen_Click()
Dim cell As Range
Dim a As Long
SpeedUp (True)
ActiveSheet.Unprotect Password:="Peter"
If ActiveCell.Column = 1 And IsDate(ActiveCell) Then
If MsgBox("Wollen Sie diese Zeile löschen?", vbOKCancel + _
vbQuestion, "Achtung!") = 1 Then
ActiveCell.EntireRow.Delete
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
End If
Else
MsgBox "Sie haben keine Zeile markiert!"
End If
ActiveSheet.Protect Password:="Peter"
SpeedUp (False)
End Sub


Danke im Voraus
Grüße aus Berlin

Anzeige
AW: Problem erkannt, Code läuft nicht!
26.04.2007 20:30:48
Gerd L
Hallo Peter,
was möchtest Du erreichen?
Stehen die Formeln in den übriggebliebenen Zeilen nach dem Löschen einer Zeile nicht schon oder noch drin?
Gruß
Gerd

AW: Problem erkannt, Code läuft nicht!
27.04.2007 11:10:54
Peter aus Berlin
Hallo Gerd,
es gibt drei Möglichkeiten wo in der Tabelle Zeilen gelöscht werden können.
1. am oberen Ende der Tabelle
2. in der Tabelle
3. am unteren Ende der Tabelle
Die Formeln Saldieren in jeder Zeile den Bestand aus der darüberliegenden Zeile und der aktuellen Zeile. Wenn also in der Tabelle eine Zeile gelöscht wird stimmen die Bezüge der darunterliegenden Zeilen nicht mehr. Mein Code bleibt hängen, wenn man die letzte Zeile am unteren Ende der Tabelle entfernt.
Ich habe versucht durch eine Abfrage das "herunterziehen" der Formeln nur dann zu erlauben, wenn es unter der zu löschenden Zeile noch eine Zeile gibt. Der Code bleib aber auch hängen.
Für das löschen der ersten Zeile müßte man auch noch eine Abfrage einbauen oder ein löschen der ersten Zeile einfach nicht erlauben, das geht auch.
Kannst du mir dabei helfen?
aktuelle Datei: https://www.herber.de/bbs/user/42079.xls
Danke im Voraus
Grüße aus Berlin

Anzeige
AW: Problem erkannt, Code läuft nicht!
28.04.2007 14:06:05
Gerd L
Hallo Peter,
=WENN(A7>0;SUMME($F$6:G7)+$I$5;"")
Nimm mal diese Additonsformel, hier für I6 abwärts.
Dann hast Du beim Zeilenlöschen 90 % weniger Probleme.
Eventuell ist noch ein Befehl wie "ActiveSheet.Calculate" erforderlich.
Teste erst mal nach Änderung der Formeln manuell.
Eine der jeweils zwei Saldo-Spalten ist doch bestimmt entbehrlich. Oder ?
Gruß aus Mannheim
Gerd

AW: Problem erkannt, Code läuft nicht!
01.05.2007 14:45:08
Peter aus Berlin
Hallo Gerd,
ich habe auch schon über so eine Lösung nachgedacht. Leider funktioniert sie nicht. Wenn ich zum Beispiel Zeile 15 lösche sieht die Formel in der neuen Zeile 15 (ehemals 16) so aus:
=WENN(A15>0;SUMME($F$6:G16)+$I$5;"")
, d.h. die Summe wird bis in Zeile 16 gebildet. Die angezeigten Salden sind somit falsch. Man müßte das Problem wie von mir angesprochen lösen. Kannst du das für mich machen?Wenn nicht, trotzdem vielen Dank.
Grüße aus Berlin

Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige