Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1596to1600
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
Inhaltsverzeichnis

Makro wird beim 2. mal nicht richtig ausgeführt

Makro wird beim 2. mal nicht richtig ausgeführt
03.01.2018 14:15:12
Lily
Hallo ihr Lieben,
ich habe ein Problem mit meinem Makro und kann es leider mithilfe von Foren etc. nicht selber lösen. Vielleicht kann es ein geschultes Auge?
Es geht um einen Code der eine Tabelle aus einem Tabellenblatt ins andere übertragen soll und dann die Leerzeilen die mit übertragen wurden rauslöschen soll.
Den Teil des Übertragens habe ich als Makro "aufgenommen" und dann in den anderen Teil (den ich im Internet gefunden habe) eingefügt. Nun ist das Problem, dass das Makro jedes 2. Mal des Ausführens ein paar Leerzeilen am Ende übrig lässt, obwohl er das eigentlich nicht soll.
Weiß jemand Rat? Ich füge mal den Code hier ein:
Public Sub Zeilen_loeschen()
' Zeilen_loeschen Makro
' Tastenkombination: Strg+g
'** Ermittlung der letzten Zeile in Spalte A
lz = Cells(Rows.Count, 2).End(xlUp).Rows.Row
Range("B4:ADD4").Select
Selection.AutoFill Destination:=Range("B4:ADD200"), Type:=xlFillDefault
Range("B4:ADD300").Select
'** Durchlauf aller Zeilen
For t = lz To 4 Step -1 'Zählung rückwärts bis Zeile 4
If Cells(t, 5).Value = "" Then 'Abfragen, ob in der ersten Spalte nichts steht
Rows(t).Delete Shift:=xlUp 'wenn nichts drin steht, wird die Zeile gelöscht und nach  _
oben verrückt
End If
Next t
End Sub

Ich wäre super dankbar wenn jemand helfen kann! :)

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro wird beim 2. mal nicht richtig ausgeführt
03.01.2018 14:43:39
ChrisL
Hi
Eine kleine Beispieldatei, womit man das Problem rekonstruieren kann, würde helfen.
cu
Chris
Makros fehlen owT
03.01.2018 15:42:46
ChrisL
.
AW: Makros fehlen owT
03.01.2018 16:01:17
ChrisL
Hi
Die ersten beiden Zeilen müssen gewechselt werden. Zuerst Autofill, dann die letzte Zeile ermitteln.
Public Sub Zeilen_loeschen()
Dim lz As Long
Application.ScreenUpdating = False
Range("B4:ADD4").AutoFill Destination:=Range("B4:ADD200"), Type:=xlFillDefault
lz = Cells(Rows.Count, 2).End(xlUp).Row
For t = lz To 4 Step -1
If Cells(t, 5).Value = "" Then Rows(t).Delete Shift:=xlUp
Next t
End Sub

cu
Chris
AW: Makros fehlen owT
03.01.2018 17:00:45
Lily
ohhhhhhhhhh es klappt! Und so einfach... Vielen Dank!! :) :)
AW: Makros fehlen owT
03.01.2018 17:03:17
Lily
Moment...leider doch nicht ganz.. jetzt wird zwar alles rausglöscht, aber neu eingefügte Sachen werden nicht übertragen... :o
Anzeige
AW: Makros fehlen owT
03.01.2018 17:28:53
ChrisL
Hi
Ist ja klar, dass sich nach dem Löschen der Zeilen/Verknüpfungen auch nichts mehr aktualisiert.
Ersetze den Button durch ein Activate Ereignis (wird automatisch bei Aktivierung der Tabelle Zeitstrahl ausgeführt).
Wichtig: Code ins Modul der Tabelle Zeitstrahl (nicht in ein Standardmodul)
Private Sub Worksheet_Activate()
Dim lz As Long
Application.ScreenUpdating = False
With Worksheets("Zeitstrahl")
.Range("B4:ADD4").AutoFill Destination:=.Range("B4:ADD200"), Type:=xlFillDefault
lz = .Cells(Rows.Count, 2).End(xlUp).Row
For t = lz To 4 Step -1
If .Cells(t, 5).Value = "" Then .Rows(t).Delete Shift:=xlUp
Next t
End With
End Sub
cu
Chris
Anzeige
AW: Makros fehlen owT
04.01.2018 14:50:22
Lily
Hi Chris,
ich möchte nicht, dass es jedes mal beim Öffnen des Reiters die Funktion ausgeführt wird, da es jedes mal recht lange braucht. Es Scheint aber jetzt doch mit dem 1. Code den du mir geschickt hast u funktionieren. Jedoch braucht das Makro eeeeeeewig um durchzulaufen. Hast du eine Idee wie man die zeit verkürzen kann ohne die Zeilenanzahl unter 200 zu bringen?
LG
Lily
etwas schneller
04.01.2018 15:57:23
ChrisL
Hi
Public Sub Zeilen_loeschen()
Dim lz As Long
Application.ScreenUpdating = False
Range("B4:ADD4").AutoFill Destination:=Range("B4:ADD" & _
Worksheets("Datentabelle").Cells(Rows.Count, 2).End(xlUp).Row + 2), Type:=xlFillDefault
lz = Cells(Rows.Count, 2).End(xlUp).Row
Application.Calculation = xlCalculationManual
For t = lz To 4 Step -1
If Cells(t, 5).Value = "" Then Rows(t).Delete Shift:=xlUp
Next t
Application.Calculation = xlCalculationAutomatic
End Sub

Mit dem Aufbau der Formeln und bedingten Formatierungen habe ich mich nicht beschäftigt. Ich denke da könnte man noch optimieren (ganze Bedingung in die bed. Formatierung ohne Umweg über die Zelle). Formeln sind weniger mein Ding und es fehlt mir die Zeit zum Analysieren, darum lasse ich diesen Teil offen.
cu
Chris
Anzeige
AW: etwas schneller
04.01.2018 16:04:58
Lily
Hi Chris
jetzt funktioniert es leider gar nicht mehr...es wird nur noch kopiert und nichts mehr rausgelöscht! :(
AW: etwas schneller
04.01.2018 16:39:45
ChrisL
lösche einmalig von Hand alles ausser Zeile 4
AW: etwas schneller
04.01.2018 16:44:49
Lily
habe ich schon versucht..hilft nichts
AW: etwas schneller
04.01.2018 17:30:32
ChrisL
dann mach halt die Autofill Zeile wieder wie vorher

318 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige