Excel automatisch neue Zeile einfügen
Hallo zusammen bin seit 2 Tagen auf der Suche aber habe nur weit aus komplizierteres gefunden
Ich suche nach einer Möglichkeit in meiner Tabelle automatisch eine Zeile einfügen zu lassen sobald in Spalte D ein Zahlenwert steht.
Die neue Zeile soll direkt unter der Zeile mit dem Zahlenwert stehen (wenn möglich soll der Cursor auch gleich in diese neue Zeile springen auf Spalte A)
An das Ende der Tabelle habe ich schon geschafft mein Problem ist nur das es eine Vorlage werden soll die aus 5 Blöcken besteht die je nach Bedarf gefüllt werden sollen,
sprich da wo ausgefüllt wird soll automatisch eine neue Zeile darunter entstehen.
Sollte für die VB Profis eigentlich kein Problem sein oder?
Ich hoffe ihr könnt mir helfen.
Schönen Abend noch und danke im vorraus
Ich suche nach einer Möglichkeit in meiner Tabelle automatisch eine Zeile einfügen zu lassen sobald in Spalte D ein Zahlenwert steht.
Die neue Zeile soll direkt unter der Zeile mit dem Zahlenwert stehen (wenn möglich soll der Cursor auch gleich in diese neue Zeile springen auf Spalte A)
An das Ende der Tabelle habe ich schon geschafft mein Problem ist nur das es eine Vorlage werden soll die aus 5 Blöcken besteht die je nach Bedarf gefüllt werden sollen,
sprich da wo ausgefüllt wird soll automatisch eine neue Zeile darunter entstehen.
Sollte für die VB Profis eigentlich kein Problem sein oder?
Ich hoffe ihr könnt mir helfen.
Schönen Abend noch und danke im vorraus
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 167374
Url: https://administrator.de/contentid/167374
Ausgedruckt am: 16.11.2024 um 01:11 Uhr
12 Kommentare
Neuester Kommentar
Hallo FlAsHdRiVe!
Versuchs mal hiermit (Quellcode in das entsprechende Tabellenblatt einfügen):
Wobei nur eine neue Zeile eingefügt wird, wenn die nächste Zeile Werte enthält. In der Leerzeile wird die Zelle in Spalte A (ColSelect) selektiert.
Gruß Dieter
Versuchs mal hiermit (Quellcode in das entsprechende Tabellenblatt einfügen):
Private Const ColChange = 4 'Spalte Eingabe (D)
Private Const ColSelect = 1 'Spalte Cursor (A)
Private Sub Worksheet_Change(ByVal Target As Range)
Dim NextLine As Long
With Target
If .Count <> 1 Or .Column <> ColChange Then Exit Sub
If IsNumeric(.Value) Then
NextLine = .Row + 1
If WorksheetFunction.CountA(Cells(NextLine, 1).Resize(1, Columns.Count)) Then
Rows(NextLine).Insert Shift:=xlDown
Cells(NextLine, ColSelect).Select
Else
Cells(NextLine, ColSelect).Select
End If
End If
End With
End Sub
Wobei nur eine neue Zeile eingefügt wird, wenn die nächste Zeile Werte enthält. In der Leerzeile wird die Zelle in Spalte A (ColSelect) selektiert.
Gruß Dieter
Hallo bastla!
Noch einen schönen Feiertag!
Gruß Dieter
Zitat von @bastla:
Nur als Anregung: Wenn mit der Spaltenangabe nicht gerechnet / verglichen werden muss (wie bei "ColSelect"), kannst Du
auch die Spaltenbenennung verwenden:
Da hast Du Recht, aber zwecks Einheitlichkeit (Spalte D benötigt eine Zahl) habe ich mich dazu durchgerungen, für Spalte A auch eine Zahl zu nehmen und hoffe Du verzeihst mir dasNur als Anregung: Wenn mit der Spaltenangabe nicht gerechnet / verglichen werden muss (wie bei "ColSelect"), kannst Du
auch die Spaltenbenennung verwenden:
Noch einen schönen Feiertag!
Gruß Dieter
Leider nicht. Es soll z.B. eine dritte Zeile automatisch eingefügt werden, wenn die zweite Zeile einen Inhalt besitzt.
Zeile 1: Welche Tiere gibt es dort? [Enter]
Zeile 2: Antwort
und wenn ich jetzt [Enter] drücke wird die dritte Zeile eingefügt und Zeile 5,6,7... werden runtergesetzt.
Trotzdem Rekord in Antworten!!!!
Danke
Zeile 1: Welche Tiere gibt es dort? [Enter]
Zeile 2: Antwort
und wenn ich jetzt [Enter] drücke wird die dritte Zeile eingefügt und Zeile 5,6,7... werden runtergesetzt.
Trotzdem Rekord in Antworten!!!!
Danke
Hallo MarkusMarkus!
Das funktioniert so nicht, da der Code ja nur auf eine Änderung (Change) des Zellinhalts reagiert, also wenn Du in der betreffenden Zelle etwas eingibst und mit Enter bestätigst.
Eine aus meiner Sicht vertretbare Lösung wäre:
Du erstellst eine Tabelle mit den Fragen durch Leerzeilen getrennt.
Danach wird bei einem Doppelklick auf eine Frage (muss als Indikator ein Fragezeichen beinhalten), eine InputBox zur Beantwortung der Frage ausgegeben und entsprechend des Inhalts (Leer, Abbruch oder Text) eine neue Zeile unterhalb der Frage eingefügt oder auch nicht...
Die standardmäßige Doppelklick-Funktion (direktes editieren einer Zelle) ist dabei außer Kraft gesetzt...
Code in das Tabellenblatt einfügen:
Gruß Dieter
Das funktioniert so nicht, da der Code ja nur auf eine Änderung (Change) des Zellinhalts reagiert, also wenn Du in der betreffenden Zelle etwas eingibst und mit Enter bestätigst.
Eine aus meiner Sicht vertretbare Lösung wäre:
Du erstellst eine Tabelle mit den Fragen durch Leerzeilen getrennt.
Danach wird bei einem Doppelklick auf eine Frage (muss als Indikator ein Fragezeichen beinhalten), eine InputBox zur Beantwortung der Frage ausgegeben und entsprechend des Inhalts (Leer, Abbruch oder Text) eine neue Zeile unterhalb der Frage eingefügt oder auch nicht...
Die standardmäßige Doppelklick-Funktion (direktes editieren einer Zelle) ist dabei außer Kraft gesetzt...
Code in das Tabellenblatt einfügen:
Option Explicit
Private Const ColSelect = 1 'Spalte A
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, ByRef Cancel As Boolean)
Dim strAntwort As String, rngNext As Range
With Target
If .Column = ColSelect And InStr(.Text, "?") > 0 Then
strAntwort = Replace(InputBox(.Text, "Frage beantworten..."), "?", "")
If strAntwort <> "" Then
Set rngNext = .Offset(1, 0)
Do Until rngNext.Text = ""
Set rngNext = rngNext.Offset(1, 0)
Loop
rngNext.Value = strAntwort
Rows(rngNext.Row + 1).Insert Shift:=xlDown
End If
End If
End With
Cancel = True
End Sub
Gruß Dieter