Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst VBA - Sämtliche Leerzeilen in Tabelle löschen

Mitglied: 106543

106543 (Level 2)

10.12.2013, aktualisiert 11:34 Uhr, 2169 Aufrufe, 6 Kommentare

Hallo,

ich hab mal wieder ein kleineres Problem, bei dem meine Syntax anscheinend irgendwie nicht funktioniert wie ich mir das denke -.-
Mal seh´n, was ihr hier beitragen könnt/wollt :D
Ich habe eine Tabelle in der Leerzeilen vorhanden sind, z.B.
01.
                   A                             B                           C 
02.
1)     Hier steht etwas Text     Hier steht eine Zahl      Hier steht ein Datum 
03.
2)     Hier steht etwas Text     Hier steht eine Zahl      Hier steht ein Datum 
04.
3) 
05.
4)     Hier steht etwas Text     Hier steht eine Zahl      Hier steht ein Datum 
06.
5) 
07.
6) 
08.
7)     Hier steht etwas Text     Hier steht eine Zahl      Hier steht ein Datum 
09.
8) 
10.
9)     Hier steht etwas Text     Hier steht eine Zahl      Hier steht ein Datum 
11.
10)     Hier steht etwas Text     Hier steht eine Zahl      Hier steht ein Datum
um das mal stümperhaft abzubilden.
was ich mir jetzt dachte, war, dass ich alle Zeile von 1000 aufwärts abgehe, gucke ob in der Zelle A/entsprechende Zahl ein Wert steht, wenn nicht soll die Zeile gelöscht werden
das ist was ich zustande gebracht habe...
01.
Dim sLetzte As String 
02.
sLetzte = Range("A" & Range("A65536").End(xlUp).Column) 
03.
For i = 1000 To 2 Step -1 
04.
    If ActiveWorkbook.ActiveSheet.Cells(i, sLetzte).Value = "" Then 
05.
        Rows(i).EntireRow.Delete 
06.
    End If 
07.
Next
ich blicke bei dem Code nicht mehr durch :D
vielleicht hat ja jemand von euch ein kleines Schnipselchen für mich, was schnell mal läuft...

Grüße
Exze
Mitglied: colinardo
LÖSUNG 10.12.2013, aktualisiert um 11:55 Uhr
Hallo Exce,
das Problem was du hast ist folgendes: Bei jedem Durchlauf der Schleife löschst du eine Zeile aus dem Workbook, d.h. nach jedem Durchlauf stimmt die Zeilennummer nicht mehr da du ja gerade eine Zeile gelöscht hast.
Du machst es nun folgendermaßen: Du iterierst über die Zellen und fügst sie zu einer MultiSelection hinzu, und erst nach dem Durchlauf aller Zellen löschst du die Multi-Selection.
01.
Sub delEmptyRows() 
02.
    Dim rngCells As Range, cell As Range, rngCombined As Range, sheet as Worksheet 
03.
    ' Hier das gewünschte Tabellenblatt angeben 
04.
    set sheet = Worksheets(1) 
05.
    Set rngCells = sheet.Range("A1", sheet.Range("A65535").End(xlUp)) 
06.
    For Each cell In rngCells 
07.
        If cell.Value = "" Then 
08.
            If rngCombined Is Nothing Then 
09.
                Set rngCombined = cell.EntireRow 
10.
            End If 
11.
            Set rngCombined = Union(rngCombined, cell.EntireRow) 
12.
        End If 
13.
    Next 
14.
    If Not rngCombined Is Nothing Then 
15.
        rngCombined.Delete 
16.
    End If 
17.
End Sub
Grüße Uwe
Bitte warten ..
Mitglied: 106543
10.12.2013 um 11:34 Uhr
Hi Uwe,

danke für deine Hilfe. Funktioniert natürlich alles wie es soll :D
daran zu denken, dass ich die Zeilen erst am Ende lösche, hab ich leider nicht gedacht und genau da war ich auch vorhin gehangen.

Vielen Dank und Grüße
Exze
Bitte warten ..
Mitglied: colinardo
LÖSUNG 10.12.2013, aktualisiert um 11:40 Uhr
-edit- hab grad noch einen Check für den Fall das keine Leerzeilen vorhanden sind hinzugefügt...
Grüße Uwe
Bitte warten ..
Mitglied: 106543
10.12.2013 um 11:43 Uhr
Noch eine kurze Frage:
Der Code wird immer fur das aktive Workbook bzw. das aktive Worksheet ausgeführt oder ?

Grüße
Exze
Bitte warten ..
Mitglied: colinardo
LÖSUNG 10.12.2013, aktualisiert um 12:00 Uhr
Zitat von 106543:

Noch eine kurze Frage:
Der Code wird immer fur das aktive Workbook bzw. das aktive Worksheet ausgeführt oder ?
Ja, obiger Code läuft nur im Code eines Tabellenblattes, wenn das nicht gewünscht ist lässt es sich aber einfach anpassen, hierzu passt du in folgendem Code einfach das Sheet in Zeile 3 an, in Zeile 4 werden dann die Ranges entsprechend referenziert, und der Code läuft dann auch in anderen Modulen.
01.
Sub delEmptyRows() 
02.
    Dim rngCells As Range, cell As Range, rngCombined As Range, sheet as Worksheet 
03.
    set sheet = Worksheets(1) 
04.
    Set rngCells = sheet.Range("A1", sheet.Range("A65535").End(xlUp)) 
05.
    For Each cell In rngCells 
06.
        If cell.Value = "" Then 
07.
            If rngCombined Is Nothing Then 
08.
                Set rngCombined = cell.EntireRow 
09.
            End If 
10.
            Set rngCombined = Union(rngCombined, cell.EntireRow) 
11.
        End If 
12.
    Next 
13.
    If Not rngCombined Is Nothing Then 
14.
        rngCombined.Delete 
15.
    End If 
16.
End Sub
p.s. werde den Code oben ergänzen.
Bitte warten ..
Mitglied: 106543
10.12.2013 um 12:00 Uhr
Jo danke, aber dann passt die einfache Variante ich aktiviere dann nacheinander die 3 Workbooks und lasse deinen Code dann drüber laufen.

Nochmal danke und Grüße
Exze
Bitte warten ..
Ähnliche Inhalte
Datenbanken
MSACCESS 2010 VBA Update Tabelle.
gelöst Frage von CrashOverDatenbanken6 Kommentare

Hallo an Alle, ich habe hier eine Aufgabe das ich nicht dahinterkomme. Also ich will einen tb update machen ...

Microsoft Office

Exscel Tabelle in Spalten Aufteilen.... VBA

Frage von thomas1972Microsoft Office2 Kommentare

Hallo, ich habe eine Excel Tabelle, welche ich als CSV Datei exportieren möchte. Soweit so gut, nur bekomme ich ...

VB for Applications

Excel VBA HTML-Tabelle auslesen

gelöst Frage von chef1568VB for Applications2 Kommentare

Hallo, ich möchte eine in einer Email eingebundenen HTML-Tabelle auslesen und in einen Array speichern. Hierzu habe ich bereits ...

Microsoft Office

EXCEL VBA Termindaten aus Tabelle Filtern

Frage von t3jxbusMicrosoft Office

Hallo, ich habe hier folgenden Codeblock gefunden für VBA im Excel: Das ganze funktioniert auch soweit super. Ich beschreibe ...

Neue Wissensbeiträge
Windows 10
Zero-Day-Lücke in Microsoft Edge
Information von kgborn vor 1 TagWindows 10

In Microsofts Edge-Browser klafft wohl eine nicht geschlossene (0-Day) Sicherheitslücke im Just In Time Compiler (JIT Compiler) für Javascript. ...

Sicherheit
Microsoft und Skype: Sicherheit
Information von kgborn vor 1 TagSicherheit

Die Tage gab es ja einige Berichte zur Sicherheit des Skype-Updaters. Der Updater von Skype läuft unter dem Konto ...

Datenschutz

Behörden ignorieren Sicherheitsbedenken gegenüber Windows 10

Information von Penny.Cilin vor 2 TagenDatenschutz8 Kommentare

Hallo, passend zum Thema Ablösung LIMUX in München ein Beitrag bei Heise (siehe Link folgend). Behörden ignorieren Sicherheitsbedenken gegenüber ...

Sicherheit
Information Security Hub Munich airport
Information von brammer vor 2 TagenSicherheit

Hallo, Neues Center für Cyber Kriminalität am Münchener Flughafen brammer

Heiß diskutierte Inhalte
DSL, VDSL
Mindestgeschwindigkeiten DSL Telekom
Frage von justlukasDSL, VDSL13 Kommentare

Hallo zusammen, Seit diesem Jahr habe ich Verständnisprobleme mit dem Verhalten der Telekom. Wir haben seit einem Jahr VDSL ...

Switche und Hubs
LANCOM-Switch: Probleme (no link) mit SFP-Modulen?
Frage von THETOBSwitche und Hubs10 Kommentare

Hi zusammen, ich habe folgendes Problem: Und zwar habe ich an einem Standort drei Switche verbaut - LANCOM GS-2326P+, ...

Firewall
RB2011 Firewall Rule eine bestimmte Mac oder IP Adresse nicht zu blockieren
Frage von lightmanFirewall10 Kommentare

Hallo liebes Forum mit ihren Spezialisten. Ich habe meine Firewall so konfiguriert das kein Endgerät ohne meine Speziellen Erlaubnis ...

Humor (lol)
Was könnte man mit einem Server machen? Idee gesucht
Frage von 2SeitenHumor (lol)8 Kommentare

Hey Zusammen Ich habe einen alten HP G2 Rackserver zu Hause rumliegen. 28GB Ram, 1xAMD Prozi mit etwa 2GHz. ...