MAKRO VBA Zellen löschen und zusammenschieben

3 Antworten

Ich geb dir nicht die Lösung aber den Weg zur Lösung welchen ich immer benutze, wenn google nichts weiss. Starte die Aufnahme eines Makros, lösche was du löschen möchtest, beende die Aufnahme und schau dir den Code an. Funktioniert eigentlich immer.

LG Olivarius

Hallo Oliviarius,

danke für deine Antwort. Ich bin überhaupt erst durch "Makro aufzeichnen" so weit gekommen. Ich habe alle zu löschenden Spalten markiert, gelöscht und hab dann die aufnahme beendet. Im Anschluss hab ich mir den Code vorgenommen und vereinfacht (Scroll Down etc gelöscht). Doch es kam beim "Abspielen" des Makros oben genannte Fehlermeldung.

Vielleicht kannst du mir ja noch einen Tipp geben? Wie gesagt ich bin absoluter Neuling (hab vor 2 Tagen angefangen mich mit der Materie zu befassen)...

Danke,

Jule

0

Hallo Jule,

Aufbauend auf dein Makro hab' ich folgendes geschrieben (& getestet):

Sub Zusammen_Ordnen()

    'Reihenfolge ist wichtig!
    Range("F:H").Delete xlToLeft
    Range("K:K").Delete xlToLeft
    Range("M:N").Delete xlToLeft
    Range("P:Y").Delete xlToLeft
    Range("A:D").Delete xlToLeft

End Sub

Grüsse

Higlav

Shit, war doch die falsche Reihenfolge (konnte nicht mehr korrigieren). Jetzt aber:

Sub Zusammen_Ordnen()

    'Reihenfolge ist wichtig!
    Range("P:Y").Delete
    Range("M:N").Delete
    Range("K:K").Delete
    Range("F:H").Delete
    Range("A:D").Delete

End Sub

PS: "xlToLeft" ist nicht vonnöten.

0
@Higlav

Hallo Higlav!

Vielen Dank für deine Hilfe!

Hat super funktionert! Weißt du vll auch wo bei meinem Makro der Fehler lag und kannst es mir erklären?

Vielen Dank!

Jule

0

Erstens Mache die Löschaktion doch mal händisch! Strg-Taste drücken und Spalten markieren. Auch da bekommst Du eine Fehlermeldung.

Excel mokiert sich, dass Du neben Bereichen (A bis D) auch einzelne Spalten löschen willst (K).

Zweitens Tu was dafür, das dein Code übersichtlich wird. Gib doch mal dein Range etwas einfacher ein:

Range("A:D,F:H").Select 

Zum Beipiel. Dann wird es besser durchschaubar! Auch wenn es Dir bei der Bewältigung des Problems nicht helfen wird. Da hilft nur rechts anfangen, die ersten Spalten löschen, dann weiter nach links die einzelne Spalte löschen.......

"Da hilft nur rechts anfangen"
zur Erklärung:
Löscht Du nämlich A:D zuerst, verschieben sich alle Spaltenbuchstaben um -4 und nichts stimmt mehr.
Bei der nächsten Löschung erneut!

0

Excel Makro VBA Zellen vergleichen und bei Übereinstimmung Zeile löschen

Hallo miteinander, kenne mich leider gar nicht in VBA aus und brauche dringend Hilfe für ein Projekt. Ich beschreibe mal kurz mein Problem: Im Worksheet "Objekt löschen" in zeile C6 soll eine Objekt ID eingegeben werden. Diese muss dann mit den Objekt IDs im Worksheet "Objektdaten" in der Spalte B verglichen werden. Wenn sie dort existiert, dann soll die gesamte Zeile, in der sich die eingegebene ID befindet, gelöscht werden. Das ganze soll funktionieren, indem man auf eine Schaltfläche auf dem 1. Tabellenblatt klickt. Ich hoffe, das war jetzt einigermaßen verständlich erklärt. Freue mich sehr über eure Hilfe Danke :) Rosi

...zur Frage

Wie durchsuche ich meine Excel Datei nach bestimmten Wörtern pro Spalte, um bei der Dateneingabe und der Suche nach der richtigen Excelzeile Zeit zu sparen?

Meine Datentabllen wachsen und wachsen. Dennoch möchte ich die gesuchte Excel Zeile möglichst schnell finden.

Ich hatte hierfür schonmal eine Suchzeile, inder mir die Zeile mit dem Wert ausgegeben wird, welche ich für die erste Spalte als Vergleich gesucht habe.


=WENNFEHLER(INDEX($A$2:$Z$4400;VERGLEICH($AC$4;$A$2:$A$4400;0);VERGLEICH(AE$2;$A$1:$Z$1;0));"Gib in AC4 einen Wort ein!")

Also kurz erklärt, In AC4 gibt man den gesuchten Wortlaut an. In AE2 ist die varilable Beschriftung der zu durchsuchenden Spalte.

Nun möchte ich, dass in der ersten zu durchsuchenden Spalte (das Wort wird in AC4 angegeben) nach dem Wort auch innerhalb der Zelle gesucht wird. Eignet sich zB für Doppelnamen und man nur nach einem Suchen kann, weil der zweite im Schreiben nicht erwähnt ist. Es sollte ein Treffen mit dem vollständigen Inhalt der gefundenen Zelle ausgegeben werden.

Die darauf folgende Formel rechts nebendran ließt jetzt aus Zelle AC5 einen weiteren Wortteil heraus, welcher in der gleichen Zeile existieren muss wie der Wortteil aus AC4. Somit muss durch die Eingabe in Zelle AC5 (falls FALSCH) die Tabelle weiter durchsucht werden nach dem gleichen Prinzip.

Am Ende der Suchspalte ist dann ein variabler Hyperlink der mich direkt zur passenden Zeile führt, nachden ich bestätigen kann, dass es bei den angezeigten Angaben sich um den richtigen Datenzeilensatz handelt.

Theoretisch gelaube ich schon, dass das mit Excel möglich ist. Bloß ich weiß es einfach nicht :(

Vielen Lieben Dank Für Deine Hilfe !!!

Diese Paar Codezeilen würden mir Stunden an Arbeit in Zukunft sparen :)

...zur Frage

VBA Programmierung - Makro soll Adressen von Zellen mit gleichem Inhalt finden

Hallo Leute,

habe ein VBA-Problem. Auf meinem Excel-Tabellenblatt existieren jede Menge Informationen. Ich bräuchte den VBA Code für ein Makro, dass mir eine Liste der Adressen von Zellen ausgibt, die den gleichen Inhalt besitzen.

...zur Frage

Makro automatisch ausführen bei Zellenänderung VBA

Hi,

ich habe ein Makro, dass mir automatisch die Zeilenhöhe mit Zeilenumbruch anpasst, wenn der Text zu lang ist (es wirkt auf das ganze Tabellenblatt aber mir geht es hauptsächlich um die verbundenen Zellen "D31:M31"). Dies passt auch soweit wenn ich das Makro nach Eingabe des geänderten Textes ausführe.

Nun benötige ich noch, dass das Makro automatisch ausgeführt wird, sobald sich der Text in der Zelle ändert. "Nehmen wir an da steht "hallo" und ich schreibe nun "hallo hans" hinein (natürlich viel länger, damit der Umbruch stattfindet).

Leider funktioniert es nicht mittels VBA, wenn ich den Text ändere.. Weiß jemand rat was ich falsch mache?

Danke für jeden Hinweis !!!

VBA in Tabelle1:

Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("$D$31:$M$31")) Is Nothing Then Zellenanpassen End Sub

Und hier das Makro:

Sub Zellenanpassen() Dim CurrentRowHeight As Single, MergedCellRgWidth As Single Dim CurrCell As Range Dim ActiveCellWidth As Single, PossNewRowHeight As Single If ActiveCell.MergeCells Then With ActiveCell.MergeArea If .Rows.Count = 1 And .WrapText = True Then Application.ScreenUpdating = False CurrentRowHeight = .RowHeight ActiveCellWidth = ActiveCell.ColumnWidth For Each CurrCell In Selection MergedCellRgWidth = CurrCell.ColumnWidth + MergedCellRgWidth Next .MergeCells = False .Cells(1).ColumnWidth = MergedCellRgWidth .EntireRow.AutoFit PossNewRowHeight = .RowHeight .Cells(1).ColumnWidth = ActiveCellWidth .MergeCells = True .RowHeight = IIf(CurrentRowHeight > PossNewRowHeight, _ CurrentRowHeight, PossNewRowHeight) End If End With End If End Sub

VG fireless91

P.S.: Meine VBA Kenntnisse sind eher mau.. von daher nicht böse sein face-wink

...zur Frage

Wie kann man mit einen Makro Ordner öffnen und dann die CSV-Dateil auswählen die im Zelle A1 geöffnet wird?

Hallo,

Ich brauche ein Makro mit dem ich einen Ordner öffnen, dort eine beliebige CSV-Datei auswählen kann und diese sich dann in der Zelle A1 öffnet.

bisher habe ich das im Netz gefunden:

Sub Weekly_Flash()

ChDir "C:\Users\Manuel\Downloads"

Call Application.Dialogs(xlDialogOpen).Show

End Sub

Dieses Makro öffnet meinen Ordner, alerdings öffnet es die CSV datei in einer neuen Excel-Datei und nicht in der Zelle A1.

Ich kenne mich leider gar nicht mit VBA aus. :/ Habe nur im Internet immer wieder Makros eingefügt und geguckt was passiert und meinen Pfad angegeben :D

...zur Frage

Zelleninhalt mit Makro/ Vba verschieben

Moin,

ich hab folgendes Problem, und zwar möchte ich eine Makrofunktion erstellen mit der man den Zellinhalt einer markierten Zelle in eine andere frei wählbare Zelle kopieren kann. Bis jetzt sieht meine Funktion so aus:

Sub Makro()

Dim Quellbereich As Range Set Quellbereich = ActiveCell

Quellbereich.Copy Range("C1").Select Selection.PasteSpecial Paste:=x1Values, Operation:=x1None, SkipBlanks:= False, Transpose:=False Application.Cutcopymode = False Quellbereich.Select Quellbereich = "" Range("C1").Select

End Sub

Jetzt ist meine Frage, wie ich "Range("C1") auch über die Auswahl mit der Maus steuern kann. Ich stell mir das mit Pause/Wait und Input neue Zellenauswahl oder so vor. Evnt. auch das man das Makro wie bisher über Strg+y startet und anschließend die Quell und die Zielzelle nach einander markiert.

...zur Frage

Was möchtest Du wissen?