Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
896to900
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
896to900
896to900
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Löscht nach dem Filtern einer Tabelle die sichtbar

Löscht nach dem Filtern einer Tabelle die sichtbar
17.08.2007 13:03:00
HuiBu
Hallo,
das folgende Programm löscht nach dem Filtern einer Tabelle die sichtbaren Zeilen.
Als einzige Prozedur im Modul funktioniert es wunderbar, aber wenn ich es in mein Hauptprogramm einfüge, meckert der Debugger: Variable Deklarieren. Was heisst das? Könnt ihr mir bei der Lösung behilflich sein?

Sub DatensaetzeLoeschen()
Antwort = MsgBox("Alle sichtbaren Zeilen loeschen?", _
vbYesNo, "Zeilen loeschen")
If Antwort = vbNo Then GoTo Ende
Application.ScreenUpdating = False
ErsteZeile = ActiveCell.CurrentRegion.Row + 1
ErsteSpalte = ActiveCell.CurrentRegion.Column
LetzteZeile = ErsteZeile + _
ActiveCell.CurrentRegion.Rows.Count - 2
LetzteSpalte = ErsteSpalte + _
ActiveCell.CurrentRegion.Columns.Count - 1
Set SichtbarerBereich = Range(Cells(ErsteZeile, _
ErsteSpalte), Cells(LetzteZeile, _
LetzteSpalte)).SpecialCells(xlVisible)
AnzahlBereiche = SichtbarerBereich.Areas.Count
For Zaehler = 1 To AnzahlBereiche
Range(SichtbarerBereich.Areas(1).Address).Delete _
Shift:=xlUp
Next
Application.ScreenUpdating = True
Ende:
End Sub


8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Löscht nach dem Filtern einer Tabelle die sichtbar
17.08.2007 13:08:20
HuiBu
Hallo,
habe nun die folgende Variablendeklaration hinzugefügt.
Leider meckert der Debugger bei folgender Zeile: ErsteZeile = ActiveCell.CurrentRegion.Row + 1
Habe ich die Variablen falsch deklariert?

Sub LöschenZeilen()
Dim ErsteZeile As Range
Dim ErsteSpalte As Range
Dim LetzteZeile As Range
Dim LetzteSpalte As Range
Dim SichtbarerBereich As Range
Dim AnzahlBereiche As Integer
Dim Zaehler  As Integer
Application.ScreenUpdating = False
ErsteZeile = ActiveCell.CurrentRegion.Row + 1
ErsteSpalte = ActiveCell.CurrentRegion.Column
LetzteZeile = ErsteZeile + _
ActiveCell.CurrentRegion.Rows.Count - 2
LetzteSpalte = ErsteSpalte + _
ActiveCell.CurrentRegion.Columns.Count - 1
Set SichtbarerBereich = Range(Cells(ErsteZeile, _
ErsteSpalte), Cells(LetzteZeile, _
LetzteSpalte)).SpecialCells(xlVisible)
AnzahlBereiche = SichtbarerBereich.Areas.Count
For Zaehler = 1 To AnzahlBereiche
Range(SichtbarerBereich.Areas(1).Address).Delete _
Shift:=xlUp
Next
Application.ScreenUpdating = True
Ende:
End Sub


Anzeige
AW: Löscht nach dem Filtern einer Tabelle die sich
17.08.2007 13:10:00
Renee
Hello HuiBui,
Ja das ErsteZeile wäre eine Variable vom Typ Long und keine Range.
Dein Makro könnte man auch so schreiben:

Sub DatensaetzeLoeschen()
Dim Antwort As Variant
Antwort = MsgBox("Alle sichtbaren Zeilen loeschen?", vbYesNo, "Zeilen loeschen")
If Antwort = vbYes Then ActiveSheet.UsedRange.SpecialCells(xlVisible).Delete shift:=xlUp
End Sub


Greetz Renee

AW: Löscht nach dem Filtern einer Tabelle die sichtbar
17.08.2007 13:40:00
HuiBu
Hi Renee,
deine Lösung ist kurz und auch sehr gut. leider löscht es die erste zeile mit den überschriften mit. die erste zeile mit den überschriften soll, wenn möglich nicht gelöscht werden.

Anzeige
AW: Löscht nach dem Filtern einer Tabelle die sich
17.08.2007 14:11:40
Renee
Hello HuiBui,
Damit bleibt die Zeile 1 stehen:

Sub DatensaetzeLoeschen()
Dim Antwort As Variant
Antwort = MsgBox("Alle sichtbaren Zeilen loeschen?", vbYesNo, "Zeilen loeschen")
If Antwort = vbYes Then _
ActiveSheet.Range(Replace(ActiveSheet.UsedRange.Address(False, False), _
"A1", "A2")).SpecialCells(xlVisible).Delete shift:=xlUp
End Sub


Greetz Renee

AW: Löscht nach dem Filtern einer Tabelle die sichtbar
17.08.2007 13:10:00
Oberschlumpf
Hi HuiBu - echt dein Name?..fiese Eltern. die ihr Kind so taufen!
In deiner Hauptdatei steht im Code

Option Explicit


Dieser Befehl "verlangt", dass alle verwendeten Variablen mit


Dim

oder


Public

oder, oder, oder vor Verwendung deklariert - also dem Programm bekanntgegeben - werden.
Mehr zu Option Explicit, Dim und Public findest du in der Excel-Hilfe.
Hilft das?
Ciao
Thorsten

Anzeige
AW: Löscht nach dem Filtern einer Tabelle die sich
17.08.2007 13:12:59
Rudi
Hallo,
die einfachste Lösung: Lösche Option Explicit im Kopf des Moduls.
Die sauberste Lösung: Deklariere die Variablen. Beispiel (unvollständig):

Sub DatensaetzeLoeschen()
Dim Antwort as Byte, ErsteZeile as Long, LetzteZeile as Long, ErsteSpalte as integer
Antwort = MsgBox("Alle sichtbaren Zeilen loeschen?", _
vbYesNo, "Zeilen loeschen")
If Antwort = vbNo Then GoTo Ende
Application.ScreenUpdating = False
ErsteZeile = ActiveCell.CurrentRegion.Row + 1
ErsteSpalte = ActiveCell.CurrentRegion.Column
LetzteZeile = ErsteZeile + _
ActiveCell.CurrentRegion.Rows.Count - 2


Gruß
Rudi
Eine Kuh macht Muh, viele Kühe machen Mühe

Anzeige
AW: Löscht nach dem Filtern einer Tabelle die sich
17.08.2007 13:35:00
HuiBu
Hallo Rudi,
erstmal Danke für die Hilfe mit der Deklaration. Es funktioniert jetzt.:-))))
Habe die Deklaration vervollständigt:
Dim ErsteZeile As Long, LetzteZeile As Long, ErsteSpalte As Integer, LetzteSpalte As Integer
Dim SichtbarerBereich As Range, AnzahlBereiche As Integer, Zaehler As Integer

AW: Löscht nach dem Filtern einer Tabelle die sich
17.08.2007 13:38:11
HuiBu
Hallo Rudi,
vielen Dank für die Hilfe mit der Daklaration. Es funktioniert jetzt :-)
Habe die Deklaration vervollständigt:
Dim ErsteZeile As Long, LetzteZeile As Long, ErsteSpalte As Integer, LetzteSpalte As Integer
Dim SichtbarerBereich As Range, AnzahlBereiche As Integer, Zaehler As Integer
Anzeige

306 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige