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, 2333 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
Syntaxfehler VBA
gelöst Frage von Dr.CornwallisDatenbanken6 Kommentare

Liebe Gemeinde, ich bräuchte Hilfe beim folgenden VBA Code(für Button in Access): Könnte mir bitte jemand erklären was ich ...

Microsoft Office
VBA Automatisierung
gelöst Frage von clockingMicrosoft Office3 Kommentare

Hallo Community, freut mich euch beigetreten zu sein. Ich werde auf folgendes Problem in allen großen Sprachen im WWW ...

VB for Applications
VBA Programmierung
Frage von specialuserVB for Applications4 Kommentare

Hallo zusammen, der Wert aus Zelle L30 und N30 soll ins wb2 kopiert werden funktionier so weit auch ganz ...

VB for Applications
VBA . PasteSpecial
gelöst Frage von ActaresVB for Applications8 Kommentare

Hallo VBA Sezialisten, In sache VBA bin ich noch ein Anfänger und ich versuche aus eine Excel Sheet Inhalte ...

Neue Wissensbeiträge
Humor (lol)
Preisvertipper
Information von Dilbert-MD vor 2 TagenHumor (lol)8 Kommentare

Moin! weil heute Freitag ist, zeige ich Euch den Preisvertipper der Woche: vergesst den Acer Predator 21x, der ist ...

Windows Update
Sicherheitsupdate für SQL Server 2014 SP3
Information von sabines vor 4 TagenWindows Update2 Kommentare

Für den SQL Server 2014 existiert ein Sicherheitsupdate. Laut KB Artikel wird es als CU3 angezeigt: Server 2014 SP3 ...

Backup

Veeam Agent für MS Windows - neue Version verfügbar (bedingt jedoch offenbar .NET Framework 4.6)

Information von VGem-e vor 5 TagenBackup1 Kommentar

Moin Kollegen, einer unserer Server zeigte grad an, dass für o.g. Software ein Update verfügbar ist. Ob ein evtl. ...

Python

Sie meinen es ja nur gut - Microsoft hilft python-Entwicklern auf unnachahmliche Weise

Information von DerWoWusste vor 6 TagenPython2 Kommentare

Stellt Euch vor, Ihr nutzt python unter Windows 10 und skriptet damit regelmäßig Dinge. Nach dem Update auf Windows ...

Heiß diskutierte Inhalte
Router & Routing
FritzBox und SynologyNAS VPN
Frage von ndeedyRouter & Routing19 Kommentare

Moin moin. Irgendwie habe ich entweder ein bescheuertes Setup, oder mir bereits komplett die Birne mit Versuchen durchgebraten. Bin ...

Cloud-Dienste
MS Sharepoint generelle Frage zur Einrichtung
Frage von ralf86Cloud-Dienste15 Kommentare

Hallo, ich will den Sharepoint als FileServer nutzen. Hier sollen mehrere Freigabeordner mit unterschiedlichen Berechtigungen erstellt werden z.B. Geschäftsführung ...

Vmware
VMware Update 5.1 zu 6.7U4
gelöst Frage von patrickebertVmware8 Kommentare

Hallo alle zusammen, ich den nächsten Monaten steht für mich die Umstellung zwei neuer physikalischer Server an und ich ...

Exchange Server
Backup MX für Exchange
Frage von Turbo-MasterExchange Server7 Kommentare

Hallo, wir betreiben unseren Exchange-Server an einem DSL-Anschluss ohne feste IP. Dessen URL ist bei unserer Domain als MX ...