Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1856to1860
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
Ausgeblendete Zeilen löschen
03.12.2021 15:50:49
Ulli
Hallo Zusammen,
ich habe eine Frage,
mit folgenden Programmzeilen lösche ich vor dem Speichen alle Kommentare und Command Button in den Arbeitsblättern.
Was müsste ich ergänzen, dass alle Ausgeblendeten Zeilen im Tabellenblatt "Muster1" und "Muster2" vor dem Speichern gelöscht werden?
Danke für eure Hilfe
Gruß Ulli
For Each wks In ActiveWorkbook.Sheets ' alle Kommentare löschen
For Each cmnt In wks.Comments
cmnt.Delete
Next cmnt
Next
For Each oShp In ActiveSheet.Shapes ' Command Button löschen
If UCase(Left(oShp.Name, 13)) = "COMMANDBUTTON" Then
oShp.Delete
End If
Next

19
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Ausgeblendete Zeilen löschen
03.12.2021 15:55:52
Klaus
Hi,
ich hab hier eine pragmatische, sehr langsame Lösung. Es geht sicherlich noch um einiges performanter.

Sub WegDamit()
Dim lRow As Long
Dim z As Long
With Sheets("Muster1")
lRow = .UsedRange.Rows.Count
For z = lRow To 1 Step -1
If .Cells(z, 1).EntireRow.Hidden = True Then .Cells(z, 1).EntireRow.Delete shift:=xlUp
Next z
End With
With Sheets("Muster2")
lRow = .UsedRange.Rows.Count
For z = lRow To 1 Step -1
If .Cells(z, 1).EntireRow.Hidden = True Then .Cells(z, 1).EntireRow.Delete shift:=xlUp
Next z
End With
End Sub
LG,
Klaus M.
AW: Ausgeblendete Zeilen löschen
03.12.2021 17:50:26
Ulli
Hallo Klaus ,
danke für deine Mühe.
Ich habe den Code in mein Speichermakro integriert, seltsamerweise stürzt Excel dann ab.
Viel Grüße Ulli
Anzeige
AW: Ausgeblendete Zeilen löschen
03.12.2021 16:16:17
UweD
Hallo
So?

Sub RausDamit()
Dim Wks As Worksheet, cmnt, oShp, LR As Long, i As Long
Application.ScreenUpdating = False
For Each Wks In ActiveWorkbook.Sheets
For Each cmnt In Wks.Comments ' alle Kommentare löschen
cmnt.Delete
Next cmnt
For Each oShp In Wks.Shapes ' Command Button löschen
If UCase(Left(oShp.Name, 13)) = "COMMANDBUTTON" Then
oShp.Delete
End If
Next
Select Case Wks.Name ' ausgeblendete Zeilen löschen
Case "Muster1", "Muster2"
LR = Wks.UsedRange.SpecialCells(xlCellTypeLastCell).Row
If LR > 1 Then
For i = LR To 1 Step -1
If Wks.Rows(i).Hidden Then
Wks.Rows(i).Delete
End If
Next
End If
End Select
Next
Application.ScreenUpdating = True
End Sub
LG UweD
Anzeige
schneller
03.12.2021 16:31:03
UweD
Hi
Anstelle Zeilenweise zu löschen, die eingeblendeten Zeilen in neues Blatt kopieren. Altes Blatt dann löschen

Sub RausDamit()
Dim Wks As Worksheet, TBN As Worksheet, cmnt, oShp, LR As Long, i As Long, TMP As String
Application.ScreenUpdating = False
For Each Wks In ActiveWorkbook.Sheets
For Each cmnt In Wks.Comments ' alle Kommentare löschen
cmnt.Delete
Next cmnt
For Each oShp In Wks.Shapes ' Command Button löschen
If UCase(Left(oShp.Name, 13)) = "COMMANDBUTTON" Then
oShp.Delete
End If
Next
Select Case Wks.Name ' ausgeblendete Zeilen löschen
Case "Muster1", "Muster2"
TMP = Wks.Name
Set TBN = Sheets.Add(after:=Wks)
Wks.UsedRange.Copy TBN.Range(Wks.UsedRange.Address)
Application.DisplayAlerts = False
Wks.Delete
Application.DisplayAlerts = True
TBN.Name = TMP
End Select
Next
Application.ScreenUpdating = True
End Sub
LG UweD
Anzeige
AW: schneller
03.12.2021 16:56:49
Luschi
Hallo UweD,
das ist sicher keine gute/optimale Idee:
- definierte Namen, die sich auf gelöschte Tabellen (z.B. 'Muster1!RisikoBew_01') beziehen gehen zwar nicht verloren,
  verlieren aber ihren Bezug und sind dann wertlos..
- Kommentare gehen dabei total verlustig
- Zellbezüge in anderen Tabellen auf die gelöschte Tabelle 'Muster1' zeigen Bezugsfehler an
- und sicher noch ein paar andere Dinge wie Druckeinstellungen usw.
Gruß von Luschi
aus klein-Paris
AW: schneller
03.12.2021 17:22:28
Ulli
Hallo Uwe,
danke für deine Mühe.
Der Code läuft durch aber die ausgeblendeten Zeilen werden nicht gelöscht. (Bei beiden Varianten)
Ich starte den Code aus einer Makrodatei, diese wird dann als xlsx abgespeichert (mit den gelöschten Objekten, Zeilen etc..)und die Makrodatei wird wieder geöffnet.
Hier der komplette Code mit deiner Ergänzung:

Sub Konvertieren()
' Konvertieren Makro
' Löschen Makro
' löschen Command Button, Checkboxen, Kommentare, schaltflächen
'ActiveSheet.Shapes.SelectAll
'Selection.Delete
Call Drucken
Call Drucken1
Dim CB, I, nam, strWs(), Antwort, wbPDF As Workbook
Dim oShp As Shape
Dim sh As Shape
Dim j As Long
Dim ws As Worksheet
Dim wks As Worksheet
Dim cmnt As Comment
Dim xOLE As Object
Dim Wkz As Worksheet, LR As Long
nam = ThisWorkbook.Name: nam = Split(nam, "."): nam = ActiveWorkbook.Path & "\" & nam(0)
For Each CB In ActiveSheet.OLEObjects
If Left(CB.Name, 8) = "CheckBox" Then
If CB.Object.Value = True Then
I = I + 1
ReDim Preserve strWs(1 To I)
strWs(I) = CB.Object.Caption
End If
End If
Next CB
ThisWorkbook.Sheets(strWs).Select
Sheets(strWs).Copy
nam = nam & "-1"
Set wbPDF = ActiveWorkbook
Application.DisplayAlerts = False
With wbPDF
.ExportAsFixedFormat Type:=xlTypePDF, Filename:=nam, Quality:= _
xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=True
.BreakLink Name:=ThisWorkbook.FullName, Type:=xlExcelLinks
For Each wks In ActiveWorkbook.Sheets   ' alle Kommentare löschen
For Each cmnt In wks.Comments
cmnt.Delete
Next cmnt
Next
For Each oShp In ActiveSheet.Shapes                 ' Command Button löschen
If UCase(Left(oShp.Name, 13)) = "COMMANDBUTTON" Then
oShp.Delete
End If
Next
For Each sh In ActiveSheet.Shapes                      ' Checkboxen löschen
If sh.Type = msoOLEControlObject Then
If TypeOf sh.OLEFormat.Object.Object Is msforms.CheckBox Then
sh.Delete
End If
End If
Next
On Error Resume Next            'alle Schaltflächen löschen
For Each ws In Worksheets
ws.Buttons.Delete
For Each xOLE In ws.OLEObjects
If TypeName(xOLE.Object) = "CommandButton" Then
xOLE.Delete
End If
Next
Application.ScreenUpdating = False
For Each wks In ActiveWorkbook.Sheets
For Each cmnt In wks.Comments ' alle Kommentare löschen
cmnt.Delete
Next cmnt
For Each oShp In wks.Shapes ' Command Button löschen
If UCase(Left(oShp.Name, 13)) = "COMMANDBUTTON" Then
oShp.Delete
End If
Next
Select Case Wkz.Name ' ausgeblendete Zeilen löschen
Case "Muster1", "Muster2"
LR = Wkz.UsedRange.SpecialCells(xlCellTypeLastCell).Row
If LR > 1 Then
For I = LR To 1 Step -1
If Wkz.Rows(I).Hidden Then
Wkz.Rows(I).Delete
End If
Next
End If
End Select
Next
Application.ScreenUpdating = True
Next
.SaveAs Filename:=nam, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
.Close SaveChanges:=False
End With
Application.DisplayAlerts = True
Sheets(1).Select
End Sub

Anzeige
AW: Ausgeblendete Zeilen löschen
03.12.2021 16:44:48
Daniel
HI
ausgeblendete Zeilen sind normalweise von der Bearbeitung ausgenommen, daher etwas schwierig.
folgender Code markiert die ursprüngliche eingeblendeten Zeilen, blendet dann alles ein und löscht die nicht markierten Zeilen.
Das Sortieren kannst du rausnehmen wenn es dich stört, aber in größren Listen wenn viele einzelnen Zeilen ausgeblendet sind, geht so das löschen schneller.

With wks.UsedRange
With .Columns(.Columns.Count + 1)
.SpecialCells(xlCellTypeVisible).Value = 1
On Error Resume Next
wks.ShowAllData
On Error GoTo 0
.EntireRow.Hidden = False
If WorksheetFunction.CountBlank(.Cells) > 0 Then
.EntireRow.Sort key1:=.Cells(1, 1), order1:=xlAscending, Header:=xlNo
.SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End If
.ClearContents
End With
End With
Gruß Daniel
Anzeige
AW: Ausgeblendete Zeilen löschen
03.12.2021 17:44:48
Ulli
Hallo Daniel,
vielen Dank für deinen Vorschlag.
ich habe einmal versucht den Code zu integrieren, da kommt eine Fehlermeldung bezüglich Blockvariabel.
Viele Grüße Ulli
Hier ist einmal der ganze Code:

Sub Konvertieren()
' Konvertieren Makro
' Löschen Makro
' löschen Command Button, Checkboxen, Kommentare, schaltflächen
'ActiveSheet.Shapes.SelectAll
'Selection.Delete
Call Drucken
Call Drucken1
Dim CB, I, nam, strWs(), Antwort, wbPDF As Workbook
Dim oShp As Shape
Dim sh As Shape
Dim j As Long
Dim ws As Worksheet
Dim wks As Worksheet
Dim wkz As Worksheet
Dim cmnt As Comment
Dim xOLE As Object
nam = ThisWorkbook.Name: nam = Split(nam, "."): nam = ActiveWorkbook.Path & "\" & nam(0)
For Each CB In ActiveSheet.OLEObjects
If Left(CB.Name, 8) = "CheckBox" Then
If CB.Object.Value = True Then
I = I + 1
ReDim Preserve strWs(1 To I)
strWs(I) = CB.Object.Caption
End If
End If
Next CB
ThisWorkbook.Sheets(strWs).Select
Sheets(strWs).Copy
nam = nam & "-1"
Set wbPDF = ActiveWorkbook
Application.DisplayAlerts = False
With wbPDF
.ExportAsFixedFormat Type:=xlTypePDF, Filename:=nam, Quality:= _
xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=True
.BreakLink Name:=ThisWorkbook.FullName, Type:=xlExcelLinks
For Each wks In ActiveWorkbook.Sheets   ' alle Kommentare löschen
For Each cmnt In wks.Comments
cmnt.Delete
Next cmnt
Next
For Each oShp In ActiveSheet.Shapes                 ' Command Button löschen
If UCase(Left(oShp.Name, 13)) = "COMMANDBUTTON" Then
oShp.Delete
End If
Next
For Each sh In ActiveSheet.Shapes                      ' Checkboxen löschen
If sh.Type = msoOLEControlObject Then
If TypeOf sh.OLEFormat.Object.Object Is msforms.CheckBox Then
sh.Delete
End If
End If
Next
On Error Resume Next            'alle Schaltflächen löschen
For Each ws In Worksheets
ws.Buttons.Delete
For Each xOLE In ws.OLEObjects
If TypeName(xOLE.Object) = "CommandButton" Then
xOLE.Delete
End If
Next
Next
With wkz.UsedRange
With .Columns(.Columns.Count + 1)
.SpecialCells(xlCellTypeVisible).Value = 1
On Error Resume Next
wkz.ShowAllData
On Error GoTo 0
 .EntireRow.Hidden = False
If WorksheetFunction.CountBlank(.Cells) > 0 Then
.EntireRow.Sort key1:=.Cells(1, 1), order1:=xlAscending, Header:=xlNo
.SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End If
.ClearContents
End With
End With
.SaveAs Filename:=nam, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
.Close SaveChanges:=False
End With
Application.DisplayAlerts = True
Sheets(1).Select
End Sub

Anzeige
AW: Ausgeblendete Zeilen löschen
03.12.2021 18:24:39
Daniel
Blockvariabel?
Kennen ich nicht.
Hast du der verwendeten Variable auch das Tabellenblatt zugewiesen?
Wenn du alle Blätter der Datei so bearbeiten willst, musst du natürlich auch die entsprechende For each wkz in Worksheets Schleife drumherum erstellen, sowie die dies ja für die anderen Löschungen ja schon gemacht hast. Dieses drumherum hab ich mir gespart, das kannst du ja schon.
Gruß Daniel
AW: Ausgeblendete Zeilen löschen
03.12.2021 18:53:41
Ulli
Hallo Daniel,
ich hatte eine Variabel noch nicht umbenannt, jetzt geht es schon weiter, außer das Abspeichern als XLSX Datei, dabei hängt er sich noch auf.
Wenn ich abbreche, dann wird eine Datei "Mappe1.xlsx" erstellt, dort sind die ausgeblendeten Zeilen gelöscht .
In folgendem Makro im Arbeitsblatt "Muster1" (aktives Arbeitsblatt) hängt es dann in der Zeile "If Not Application ....."

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Zeile As Long
If Not Application.Intersect(ActiveCell, Range("J6:j969")) Is Nothing Then
Zeile = Right(ActiveCell.Address, Len(ActiveCell.Address) - 3)
Zeile = Application.WorksheetFunction.RoundDown((Zeile - 1) / 3, 1) * 3 + 1
UserForm3.Label34.Caption = Left(ActiveCell.Address, 3) & Zeile
UserForm3.Show
End If
End Sub
Leider ist die Datei zum posten zu groß, ich könnte sie nur per Mail senden.
Gruß Ulli
Anzeige
AW: Ausgeblendete Zeilen löschen
03.12.2021 19:05:27
Daniel
ohne den Zusammenhang zu kennen und wie deine Makros und Eventmakros zusammenspielen, kann ich da dazu nicht viel sagen.
Bedenke, das Eventmakros auch dann ausgelöst werden, wenn ein Makro die entsprechende Aktion ausführt. Manchmal werden die auch indirekt ausgelöst.
Ich würde hier auf jeden Fall mal das ACTIVECELL durch TARGET(1) austauschen, ist sicherer.
wenn du generell nicht willst, dass über eine Makroaktivität so ein Eventmakro ausgelöst wird, dann kannst du den Befehl Application.EnableEvents = False ausführen lassen, danach werden die SelctionChange, Change- und sonstigen automatischen Makros nicht mehr ausgeführt.
Du darfst nur nicht vergessen, das mit Application.EnableEvents = True wieder einzuschalten, sonst bleiben sie ausgeschaltet
Anzeige
AW: Ausgeblendete Zeilen löschen
03.12.2021 21:39:23
Ulli
Hallo Daniel,
vielen Dank für deine Unterstützung.
Ich habe noch einiges versucht, aber Excel hängt sich dann immer wieder auf.
Prinzipiell funktioniert es, aber irgendetwas kollidiert.
Ich finde es leider nicht heraus.
Viele Grüße Ulli
AW: Ausgeblendete Zeilen löschen
03.12.2021 22:25:56
Daniel
ohne den vollständigen Code und die Datei dazu wird es schwierig dir zu helfen.
Gruß Daniel
AW: Ausgeblendete Zeilen löschen
03.12.2021 22:32:48
Ulli
Hallo Daniel,
da die Datei zu groß ist könnte ich diese leider nur per E.Mail senden.
Gruß Ulli
AW: Ausgeblendete Zeilen löschen
04.12.2021 01:43:33
Daniel
Du kannst den Code zeigen.
du kannst alles rauslöschen, was man nicht braucht.
du kannst in ein anderes Forum wechseln, wo man mehr hochladen kann (z.B. www.office-loesung.de/p/ , musst dich aber anmelden)
Gruß Daniel
Anzeige
AW: Ausgeblendete Zeilen löschen
04.12.2021 06:23:09
Ulli
Hallo Daniel,
hier einmal die stark abgespeckte Datei.
Das Makro wird über den Button "Auswahl als PDF und .xlsx" vom Arbeitsblatt Deckblatt gestartet.
Das Makro soll ausgewählte Tabellenblätter als pdf sowie als xlsx Datei (ohne Makros, Schaltflächen, Command Button, NEU ausgeblendete Zeilen etc...) speichern und dann die Ursprungsdatei wieder öffnen.
Beim Speichern als .xlsx hängt er sich auf.
Dein Makro habe ich ab Zeile 85 eingebunden
Danke für deine Hilfe
Gruß Ulli
https://www.herber.de/bbs/user/149568.xlsm
AW: Ausgeblendete Zeilen löschen
04.12.2021 21:32:29
Ulli
Hallo Daniel,
hattest du noch einmal die Möglichkeit dir die Beispieldatei anzusehen?
Viele Grüße Ulli
AW: Ausgeblendete Zeilen löschen
05.12.2021 18:01:08
Ulli
Hallo Zusammen,
hat von euch noch jemand eine Idee?
Ich habe die Beispieldatei noch einmal angehängt.
Die Funktion, das Ausgeblendeten Zeilen gelöscht werden ist noch nicht integriert, bekomme ich leider mit den Vorschlägen nicht hin.
Viele Grüße Ulli
https://www.herber.de/bbs/user/149602.xlsm
AW: Ausgeblendete Zeilen löschen
05.12.2021 18:25:25
Ulli
Hallo Zusammen,
ich habe den Fehler jetzt behoben.
Der Tipp von Daniel die Eventmakros auszuschalten war der Richtige weg, ich hatte den Befehl nur an der falschen Stelle platziert.
Danke noch einmal für Eure Unterstützung
Gruß Ulli

28 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige