3.3k Aufrufe
Gefragt in Tabellenkalkulation von johannes94 Mitglied (429 Punkte)
Hallo,
mit folgendem Makro füge ich per Buttonklick über eine markierte Zeile eine neue ein:
Sub ZeileEinfügen()

With Selection
Selection.Insert Shift:=xlDown
Range("A1").Select
End With

End Sub

Dann springt Excel nach Einfügen der Zeile in die Zelle A1.
Ich möchte aber, dass Excel danach in die Spalte 1 der neuen Zeile springt oder die neue Zeile markiert.
Da ich ein völliger VBA-Neuling bin, weiß ich nicht, was ich in den Code statt "A1" einfügen soll.

Viele Dank für Tipps,
Johannes

10 Antworten

0 Punkte
Beantwortet von hajo_zi Experte (9.1k Punkte)
Hallo Johannes,

auf select usw.kann in VBA zu 99,9% verzichtet werden.
Option Explicit

Sub ZeileEinfügen()
Selection.Insert Shift:=xlDown
Cells(Selection.Row, 1).Select
End Sub

Gruß hajo
0 Punkte
Beantwortet von johannes94 Mitglied (429 Punkte)
Hallo Hajo,
das mit select dient nur dazu, dass, wenn ich die neue Zeile in Zeile 200 einfüge, ich danach nicht wieder zu der neu erstellten Zeile scrollen muss, um dort Werte einzutragen.
Bei deiner Variante springt Excel in Zelle A3.
Das wollte ich leider nicht.
Vielleicht noch andere Lösungen?
Trotzdem Danke für die schnelle Antwort,
Johannes
0 Punkte
Beantwortet von hajo_zi Experte (9.1k Punkte)
Hallo Johannes,

wenn die Zeile 3 markiert war ist das klar.

Gruß Hajo
0 Punkte
Beantwortet von johannes94 Mitglied (429 Punkte)
Hallo Hajo,
Es war aber Zeile 21 markiert.
Gruß, Johannes
0 Punkte
Beantwortet von hajo_zi Experte (9.1k Punkte)
Hallo Johannes,

das kann ich nicht nachvollziehen.

Gruß Hajo
0 Punkte
Beantwortet von johannes94 Mitglied (429 Punkte)
Hallo Hajo,
da ich wie gesagt wenig von VBA verstehe, frage ich, wie funktioniert denn
Cells(Selection.Row, 1).Select

?
Gruß,
Johannes
0 Punkte
Beantwortet von hajo_zi Experte (9.1k Punkte)
Hallo Johannes,

Selection.Row gibt die selektierte Zeile zurück.
1=spalte A

Gruß Hajo
0 Punkte
Beantwortet von johannes94 Mitglied (429 Punkte)
Hallo Hajo,
Das ist verständlich, danke sehr.
Ich habe noch etwas anderen Code in meinem Makro, will heißen, als ich die Frage gestellt habe, dachte ich, der sei nicht wichtig. Ich poste ihn jetzt doch, damit aufgedeckt werden kann, ob dieser noch etwas anderes beeinflusst:

Option Explicit

Sub ZeileEinfügen()

With Selection
Selection.Insert Shift:=xlDown
Range("J3:P3").Select
Selection.AutoFill Destination:=Range("J3:P81"), Type:=xlFillDefault
Range("R3:T3").Select
Selection.AutoFill Destination:=Range("R3:T81"), Type:=xlFillDefault
Cells(Selection.Row, 1).Select
End With

End Sub

Wie kann ich jetzt erreichen, dass Excel die neue Zeile markiert oder in eine Zelle der neuen Zeile springt?
Grüße,
Johannes
0 Punkte
Beantwortet von hajo_zi Experte (9.1k Punkte)
Halo Johannes,

ich hatte doch schon geschrieben das select usw. nicht notwendig ist.

Sub ZeileEinfügen()
Selection.Insert Shift:=xlDown
Cells(Selection.Row, 1).Select
Range("J3:P3").AutoFill Destination:=Range("J3:P81"), Type:=xlFillDefault
Range("R3:T3").AutoFill Destination:=Range("R3:T81"), Type:=xlFillDefault
End Sub

Gruß Hajo
0 Punkte
Beantwortet von johannes94 Mitglied (429 Punkte)
Danke, jetzt funktioniert es, so wie ich es wollte.
...