3.4k Aufrufe
Gefragt in Tabellenkalkulation von
Hallo Ihr professionellen :)

ich hab da ein Problem. Ich habe bereits ein Makro in dem ich in jeder 2ten Zeile eine Leerzeile einfügen kann aber ich brauche das ganze nur für bestimmte Spalten.

Ich brauche also ein Makro, welches mir z.B. Ab Spalte B12 bis B24 und von Spalte K12 bis K24jede zweite Zeile eine Leerzeile einfügt, ohne, dass das´Makro auch in den anderen Spalten greift.

Ich habs schon mit einigen Änderungen versucht aber ich bin absoluter Anfänger in VBA und mir ist anscheinend so nicht mehr zu helfen.

Am besten wäre natürich ein Makro welches mich nach den entsprechenden Spalten und Zeilen fragt ab dem die Formatierung beginnt, da diese auch varriieren können.

Für tatkräftige Hilfe wäre ich euch unendlich dankbar... ;)

LG

15 Antworten

0 Punkte
Beantwortet von saarbauer Profi (15.6k Punkte)
Hallo,

was du vorhast, wenn ich es richtig verstehe, geht nicht. Leerzeile einfügen geht nur über die ganze Zeile.

Was du machst geht zwar vom Prinzip her schon, aber dann verschieben sich Teile der Daten und das vermute ich willst du nicht.
Die Daten aus B 3 und K3 würden dabei nach B4 und K4 verschoben und der Rest der Zeile bleibt in Zeile 3.

Gruß

Helmut
0 Punkte
Beantwortet von
Doch, eigentlich will ich genau das damit bezwecken :).Die Daten sollen
immer weiter runter rutschen.nur mit jeweils einer Leerzeile
dazwischen.aber dies halt nur in bestimmten spalten. Blöd wenn das
wirklich nicht ginge.
0 Punkte
Beantwortet von saarbauer Profi (15.6k Punkte)
Hallo,

ich gehe davon aus, dass die Werte in einer Spalte zusammengehören und dann würde ein Versatz zwischen den Werten entstehen. Willst du das wirklich

Gruß

Helmut
0 Punkte
Beantwortet von
Ja ich denke schon.die Daten sind auch eher Text und keine Werte die
ich später irgendwie sortieren müsste.es geht rein um die leerzeilen
dazwischen. Mit dem Text wird danach nichts mehr unternommen.keine
Berechnung Sortierung i oder sonstiges.es geht nur um die Anordnung
im ganzen Tabellenblatt.

:)
0 Punkte
Beantwortet von saarbauer Profi (15.6k Punkte)
Hallo,

versuch es mal mit dem Makro

Sub Makro1()
'

Range("B13").Select
Application.CutCopyMode = False
Selection.Insert Shift:=xlDown
Range("B15").Select
Selection.Insert Shift:=xlDown
Range("B17").Select
Selection.Insert Shift:=xlDown
Range("B19").Select
Selection.Insert Shift:=xlDown
Range("B21").Select
Selection.Insert Shift:=xlDown
Range("B23").Select
Selection.Insert Shift:=xlDown
Range("B25").Select
Selection.Insert Shift:=xlDown
Range("B27").Select
Selection.Insert Shift:=xlDown
Range("B29").Select
Selection.Insert Shift:=xlDown
Range("B31").Select
Selection.Insert Shift:=xlDown
Range("B33").Select
Selection.Insert Shift:=xlDown
Range("B35").Select
Selection.Insert Shift:=xlDown
Range("B37").Select
Selection.Insert Shift:=xlDown
Range("K13").Select
Application.CutCopyMode = False
Selection.Insert Shift:=xlDown
Range("K15").Select
Selection.Insert Shift:=xlDown
Range("K17").Select
Selection.Insert Shift:=xlDown
Range("K19").Select
Selection.Insert Shift:=xlDown
Range("K21").Select
Selection.Insert Shift:=xlDown
Range("K23").Select
Selection.Insert Shift:=xlDown
Range("K25").Select
Selection.Insert Shift:=xlDown
Range("K27").Select
Selection.Insert Shift:=xlDown
Range("K29").Select
Selection.Insert Shift:=xlDown
Range("K31").Select
Selection.Insert Shift:=xlDown
Range("K33").Select
Selection.Insert Shift:=xlDown
Range("K35").Select
Selection.Insert Shift:=xlDown
Range("K37").Select
Selection.Insert Shift:=xlDown

End Sub


Gruß

Helmut
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo Lisa,

hier ein variables Makro mit Abfrage:

Sub leere_zelle_einfuegen()
Dim azeile, lzeile, zeile, zaehler As Long
Dim spalte As String

spalte = InputBox("Bitte geben Sie eine Spalte ein (Buchstabe):", "Eingabe")
azeile = InputBox("Bitte geben Sie die erste Zeile ein:", "Eingabe")
lzeile = InputBox("Bitte geben Sie die letzte Zeile ein:", "Eingabe")

For zeile = azeile To lzeile
zaehler = zaehler + 1
Range(spalte & zeile + 1 * zaehler).Insert Shift:=xlDown
Next zeile

End Sub


Gruß

M.O.
0 Punkte
Beantwortet von
Saarbauer:

Die Idee ist nett. Nur ich brauche das Ganze für mehrere Spalten. Wenn ich alles einzeln aufführe, habe ich bald mehr Arbeit mit dem Makro als wenn ich von Hand eine Leerzeile einfügen würde. Da ich die Leerzeilen von einem Bereich B31 bis K31 abwärts einfügen muss und Q31 bis X31 abwärts.

M.O: Irgendwie zeigt das Programm einen Fehler an wenn ich dein makro benutze.

und zwar: Range(spalte & zeile + 1 * zaehler).Insert Shift:=xlDow

nimmt er nicht.

Was nun?

Danke schon einmal für eure Hilfe bis jetzt
0 Punkte
Beantwortet von
Okay, weiteres Problem,

die Bereiche die ich angebe müssen alle eine Leerzeile bekommen, da sie alle miteinander verbunden sind. wenn ich das makro von MO nehme, dann teilt er alle Zellen wieder und hört nach der ersten Position wieder auf Leerzeilen einzufügen
0 Punkte
Beantwortet von saarbauer Profi (15.6k Punkte)
Hallo,

um hier weiterzuhelfen, wenn überhaupt möglich (da verbundene Zellen das besch*** ist was man Machen kann), wäre eine Beispieltabelle nicht schlecht.

Geht hier

www.file-upload.net/?why=1

und dann Link hochladen.

Gruß

Helmut

p.s. meine Lösung bezog sich auf deine Fragestellung, jetzt ist deine Fragestellung anders. Du solltest in zukunft deine Frage so stellen, dass der Helfer nicht jedesmal neu anfangen muss
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo Lisa,

wie Helmut richtig sagt, schließen sich verbundene Zellen und VBA aus.
ich habe das Makro nach deinen Angaben in deiner Frage 1 erstellt. Dort war weder von Eingabe von Bereichen noch von verbundenen Zellen die Rede.
Bei einem Test funktioniert das Makro einwandfrei. Das Makro ist ein allgemeines Modul zu kopieren.
Hier ein angepasstes Makro (quick & dirty) in dem du Bereiche eingeben kannst (jedoch besteht auch hier das Problem der verbundenen Zellen):

Sub leere_zelle_einfuegen2()
Dim azeile, lzeile, zeile, zaehler As Long
Dim aspalte, lspalte As String

aspalte = InputBox("Bitte geben Sie die erste Spalte ein (Buchstabe):", "Eingabe")
azeile = InputBox("Bitte geben Sie die erste Zeile ein:", "Eingabe")
lspalte = InputBox("Bitte geben Sie die leltzte Spalte ein (Buchstabe):", "Eingabe")
lzeile = InputBox("Bitte geben Sie die letzte Zeile ein:", "Eingabe")

For zeile = azeile To lzeile
zaehler = zaehler + 1
Range(aspalte & zeile + 1 * zaehler, lspalte & zeile + 1 * zaehler).Insert Shift:=xlDown
Next zeile

End Sub


Ansonsten hilft die von Helmut vorgeschlagene Beispieltabelle.

Gruß

M.O.
...