Spalten löschen wenn nach Spaltenüberschrift kein Inhalt vorhanden ist!

6 Antworten

Vom Fragesteller als hilfreich ausgezeichnet
Sub spaltenLoeschen()

'mit with kann man ein Objekt (Hier das Sheet) direkt ansprechen:

With ThisWorkbook.Worksheets("Sheet1")

'eine Schleife von 4te Spalte (da D = 4er Buchstabe im Alphabet) bis Spaltenanzahl (Für Zeile 200 anstatt .Columns.Count einfach 200 einsetzen ;) )

For i = 4 To .Columns.Count

'Prüft ob es in der Zelle mit Adresse - Zeile 3, Spalte D bis Ende einen Eintrag gibt:

If .Cells(3, i) = ""

'Wenn nicht löschen:

Then.Columns(i).Delete

'Und alles wieder schließen

End If


Next i


End With


End Sub

Hier nochmal kommentiert, damit man auch als VBA Neuling alles vesteht.

kaka85 
Fragesteller
 30.09.2010, 09:02

Guten Morgen Grandmaster,

recht herzlichen dank fuer deine ausfuehrliche Beschreibung. Probiere es gleich auf der Arbeit aus und melde mich danach wieder.

0
kaka85 
Fragesteller
 30.09.2010, 10:17

So mir ist nun aufgefallen das ich noch was wichtiges vergessen habe und zwar ist das eine andere Datei wo die Spalten gelöscht werden sollen. Ich denke mal das nur eine Änderung bei With ThisWorkbook.Worksheets("Sheet1")nötig ist, aber könntest du mir vielleicht auf die Sprünge helfen.

0
TheGrandmaster  30.09.2010, 16:16
@kaka85

Hallo kaka85,

kannst du den Code nicht in der anderen Datei eintippen und ausführen?

Ansonsten kannst du auch ActiveWorkbook.worksheets("Sheet1") benutzen, das führt den Code in dem Excel aus der im Moment selektiert ist.

Das würde ich aber nicht empfehlen, da man leicht aus versehen ein anderes Excel Sheet anklickt, oder man öfters 2 oder mehr Excels offen hat, und dann kann VBA durcheinanderkommen.. Aber wenn du das nur einmalig gebrauchst und du es nicht fest in einem Programm einbauen willst sollte es reichen.

Beste Grüße, TheGrandmaster

0
Sub spaltenLoeschen()
    With ThisWorkbook.Worksheets("Sheet1")
        For i = 1 To .Columns.Count
            If .Cells(3, i) = "" Then
            .Columns(i).Delete
            End If
        Next i
    End With
End Sub
TheGrandmaster  29.09.2010, 20:50

:D:D Sorry komme mit dem Code Editor hier irgendwie nicht klar, hoffentlich kannst du es lesen. Einfach anstatt "Sheet1" deinen Sheetnamen einfügen und ausprobieren ;)

0
kaka85 
Fragesteller
 29.09.2010, 22:11
@TheGrandmaster

hi grandmaster,

ich habe noch zwei fragen und zwar kannst du mir vielleicht sagen, wie ich den Code ändern müsste wenn ich möchte dass der Code erst ab Spalte D prüft ob die Bedingungen zutreffen und ich möchte gerne das er jede Spalte(ab D) bis Zeile 200 prüft ob Werte vorkommen. Sorry bin ein Neuling und habe echt keine Ahnung von VBA. Werde aber Kurse besuchen. Danke für deine Mühe

0

Hallo kaka85,

probier's mal hiermit:

> Sub spaltenLoeschen()
> With ThisWorkbook.Worksheets("Sheet1") > For i = 1 To .Columns.Count > If .Cells(3, i) = "" Then > .Columns(i).Delete > End If > Next i
> End With
> End Sub

beachte jedoch, dass hiermit nur die dritte Zeile jeder Spalte geprüft wird! Wenn andere oder mehr Zellen geprüft werden sollen kannst du ja rumexperimentieren und den Code umändern :)

Beste Grüße, TheGrandmasta

Wenn Du eine vollkommen leere Spalte weg haben willst, den Buchstaben der Spalte anklicken, damit ist die Spalte markiert, dann auf Bearbeiten und dort "Spalte löschen" anklicken, dann speichern.

kaka85 
Fragesteller
 29.09.2010, 17:24

Danke für die schnelle antwort, aber ich brauche ein VBA-Code, da es eine sehr große Datei ist und die Aufgabe wiederkehrend ist, möchte ich es nicht immer wieder per Hand machen.

Wichtig hierbei ist es halt, dass die Prüfung erst ab der Spalte I Zeile 3 erfolgen soll. Hoffe dass Sie mir weiterhelfen können und danke schon mal für ihre Mühe :-)

0

Probiere es mit dem Filter und blende leere Zellen aus.