Excel vba

Liebe/-r Experte/-in, ecel vba

Ich habe eine frage an Sie.

Ich habe eine excel tabelle. In dieser excel tabelle sollen durch ein makro alle leeren felder gelöscht werden.

Was ich nur teilweise hinbekommen habe(google). Deswegen wäre ein quellcode gut der wirklich alle leeren felder löscht.

weiterhin habe ich das problem das alles was über „Alles in Euro“ steht gelöscht werden soll von „A“: bis „L“. Auch der text „Alles in Euro“ soll gelöscht werden

und alles was drunter steht soll nach oben rutschen.

Ist das möglich?

Vielen Dank im Vorraus

Zellen löschen
Hi Unbekannter,
mit „alle leeren Felder“ meinst du wohl alle leeren Zellen - das nur
nebenbei.

Das mit dem Löschen ist nicht so ganz klar.
Nehmen wir an, du hast im Bereich A1:C3 acht Werte stehen. B2 ist leer.
aa11 bb11 cc11
aa22 ____ cc22
aa33 bb33 cc33

Wenn man B2 löscht, gibt es zwei Möglichkeiten:

  • C2:IV2 rutscht nach links
    oder
  • B3:B65536 rutscht nach oben.

Im Beispiel sähe das so aus:
aa11 bb11 cc11
aa22 cc22 ____
aa33 bb33 cc33

oder:
aa11 bb11 cc11
aa22 bb33 cc22
aa33 ____ cc33

Wie soll nun gelöscht werden? Das hängt von den Daten und ihrem Zusammenhang ab.

Auch beim 2. Problem frage ich erst mal nach, ob ich das richtig verstanden habe:
In den Spalten A bis L kann in irgendwelchen Zeilen der Text
Alles in Euro
stehen. Dann sollen die Fundzelle und alle Zellen darüber (bis incl. Zeile 1) gelöscht werden.

Auch hier ist wieder die Frage, ob das darunter stehende nach oben oder
das rechts davon stehende nach links rutschen soll.

Rückmeldung wäre nett - Grüße von Erich aus Kamp-Lintfort

Hallo und danke für die Schnelle Antwort.

Zum Fall 1:

Die zellen darunter sollen hoch rutschen das ist richtig.

aa11 bb11 cc11
aa22 bb33 cc22
aa33 ____ cc33

zum fall 2:

aa11 bb11 cc11 aa11 bb11 cc11
aa22 bb22 cc22 aa22 bb22 cc22
Alles bb33 cc33 aa33 bb33 cc33

nun soll die zeile wo „alles in euro“ steht, gelöscht werden und alles was darüber steht.

Ab der zeile alles was drüber ist und in der zeile soll gelöscht werden.

alles was darunter steht soll nach oben verschoben werden

danke und mfg

ich habe jetzt fast alles hinbekommen. nur nicht das mit dem „alles in euro“

hier erstmal den code den ich schon habe:

Option Explicit

Sub DeleteEmptyRows()
Dim intRow As Integer, intLastRow As Integer
intLastRow = Cells.SpecialCells(xlCellTypeLastCell).Row
For intRow = intLastRow To 1 Step -1
If Application.CountA(Rows(intRow)) = 0 Then
Rows(intRow).Delete
End If
Next intRow

'Sub Leere_Spalten_löschen()
Dim leere_Spalte As Integer
Application.ScreenUpdating = False
For leere_Spalte = 256 To 1 Step -1
If Application.CountA(Columns(leere_Spalte)) = 0 Then
Columns(leere_Spalte).Delete
End If
Next

'Sub spalte_A_löschen()
Range(„A:A“).Delete

End Sub
___________________________________________________-

funzt wunderbar.

Entschuldigung wenn ich sie schon wieder anschreibe aber ich wollte ihn mitteilen das ich alles hinbekommen habe was ich von ihnen wissen wollte.

nun ein neues prob.

in meiner exel tabelle stehen wörter mit dem gleichem inhalt.
in den zeilen wo dies steht soll gelöscht werden.

wie mache ich das

vorher: (Wort ist „hi“)
aa11 bb22 cc33
hi11 bb22 cc33
aa11 bb22 hi11

nachher:

a11 b22 c33

thx mfg

ich habe es hinbekommen

alles

keine fragen mehr

vielen dank trotzdem

Hallo Alpha63,

leider kann ich ihnen für ihr Problem keine passende Antwort geben, da es meines Wissens keine Funktion gibt, die leere Zellen erkennt und gleichzeitig löscht. Es seid denn diese Leerzellen befinden sich immer an der selben Stelle. Dann müsste man den Vorgang einmalig aufzeichen und kann diesen dann immer wieder abspielen.

Hoffe ich konnte ihnen zumindest etwas weiter helfen.

Gruß
Steffen

Guten Morgen/Guten Tag

Ich habe es geschaft mir selber eine zu schreiben (hilfe google).

hier der code:
sub löschen ()
intLastRow = Cells.SpecialCells(xlCellTypeLastCell).Row
For intRow = intLastRow To 1 Step -1
If IsEmpty(Cells(intRow, 1)) Then
Rows(intRow).Delete
End If
Next intRow
end sub

funzt wunderbar.

trotzdem danke für ihr bemühen

mfg

Hallo Alpha63,

willst du die leeren Felder nur von eine bestimmte Spalte suchen und dann diese Zelle von diese Spalte löschen bzw. nach oben verchieben oder willst du die ganze Zeile löschen bzw. nach oben verschieben?

So wirst du nur die Zelle „C3“ löschen
Celle(2,3).Delete Shift:=xlUp
Das du nicht in eine andere Tabellenblatt löschen wirst, sollst du die interne name des Tabellenblatt mit eingeben:
z.B.: Tabellenblatt auf dem Excel Seite heisst „Test“ und die interne Name „Tabelle1“ => diese Name kannst du in dem Projekt Explorer von Microsoft Visual Basic oberfläche.
In diesen Fall wirst du folgendes schreiben:
Tabelle1.Celle(2,3).Delete Shift:=xlUp

So wirst du die ganze Zeile „2“ löschen
Rows(„2:2“).Delete Shift:=xlUp
Hier wird genau so sein:
Tabelle1.Rows(„2:2“).Delete Shift:=xlUp

Mit diese Schleife kannst du in dem Selectierte Bereich alle leeren zeile löschen.
Du muss als erstens diese bereich selektieren und dann die funktion ausführen.

’ Die Variabel deklarieren
Dim oZeile As Range
Dim sTest As String
Dim aTest() As String
Dim iZeile As Long

For Each oZeile In Selection
If IsEmpty(oZeile) = True Then
sTest = oZeile.Address
aTest() = Split(sTest, „$“)

iZeile = CLng(aTest(UBound(aTest())))
’ Ganze Zeile
Rows(iZeile & „:“ & iZeile).Delete shift:=xlUp

’ nur die Zeile
oZeile.Delete shift:=xlUp
End If
Next

Falls etwas unklar ist, kannst du mir detallierte Infos geben und dann werde ich dich gerne weiter helfen.

mfg
Mayla