Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1732to1736
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA Zeile hinzufügen/löschen

VBA Zeile hinzufügen/löschen
09.01.2020 22:40:51
MarC
Servus zusammen,
ich versuche gerade mit VBA eine Zeile per click in eine darunter liegende Zeile/Zelle mit der Aufschrift "insert new line" hinzuzufügen. leider schaffe ich es nur per button aber nicht in dem ich in eine Zelle klicke.
Beispiel:
Ich klicke in die Zelle B18. Daraufhin sieht dann die Zeile 18 wie die Zeile 17 aus und die Aufschrift "insert new line" wandert in die Zeile 19. Wenn ich jetzt auf eins der "x" klicke wird die Zeile gelöscht und sieht dann wieder aus wie auf dem Bild.
Kann mir bitte jemand bei meinem Problem helfen?
Userbild
https://www.herber.de/bbs/user/134288.xlsm

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Zeile hinzufügen/löschen
09.01.2020 23:16:53
Werner
Hallo,
da würde ich den Doppelklick verwenden.
Doppelklock auf Insert new Line - Zeile einfügen
Doppelklick auf x Zeile löschen
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Column = 2 Then
If Target.Cells(1, 1) = "Insert new line" Then
Cancel = True
Rows(Target.Row - 1).Copy
Rows(Target.Row).Insert
Application.CutCopyMode = False
End If
ElseIf Target.Column = 1 Then
If Target = "x" Then
Cancel = True
Target.EntireRow.Delete
End If
End If
End Sub
Code gehört ins Codemodul des Tabellenblattes auf dem er sich auswirken soll.
Rechtsklick auf den Tabellenblattreiter - Code anzeigen - Code rechts ins Codefenster kopieren
Gruß Werner
Anzeige
AW: VBA Zeile hinzufügen/löschen
10.01.2020 10:31:07
MarC
Danke für deine Hilfe Werner. Der Code funktioniert. Ich hätte jetzt aber dennoch eine bitte. Ich habe vergessen zusagen das die erste Zeile (Zeile 16) immer stehen bleiben soll und das wenn jetzt bei Name, Role oder email was steht und diese Zeile löschen möchte das man in dem Fall gefragt werden soll ob man diese Zeile wirklich löschen möchte. Kannst du mir hierbei nochmal helfen
Ich habe noch eine andere Frage und zwar habe ich im Internet einen Code gefunden der angeblich genau das machen soll was ich möchte aber bei mir funktioniert es nicht. Und anstatt zwei mal zu klicken muss man da nur einmal drauf klicken. Kannst du mir vielleicht sagen wieso diese Anwendung bei mir nicht funktioniert?
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address = Range("Team_Footer").MergeArea.Address Then
'Insert team row
R = Target.Row
Rows(R & ":" & R).Select
Selection.Insert Shift:=xlDown
Selection.FillDown
Range("B" & R & ",D" & R & ",F" & R & ",H" & R).ClearContents
Range("B" & R & ",D" & R & ",F" & R & ",H" & R).Select
Range("B" & R).Select
ElseIf Target.Row > Range("Team_Header").Row _
And Target.Row  2 Then
R = Target.Row
If Target.Cells(1, 2) = "" Then
Range(R & ":" & R).EntireRow.Delete
Range("D" & R - 1).Select
Else
If MsgBox("Delete team member?", vbYesNo, "Delete...") = vbYes Then
Range(R & ":" & R).EntireRow.Delete
Range("D" & R - 1).Select
Else
Range("D" & R).Select
End If
End If
End If
Else
ComboBox1.Visible = False
End If
End Sub

Anzeige
AW: VBA Zeile hinzufügen/löschen
10.01.2020 12:12:28
Jürgen
Hallo MarC,
einfach noch nach der Zeile abfragen.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim lngBox As Long
If Target.Column = 2 Then
If Target.Cells(1, 1) = "Insert new line" Then
Cancel = True
Rows(Target.Row - 1).Copy
Rows(Target.Row).Insert
Application.CutCopyMode = False
End If
ElseIf Target.Column = 1 Then
If Target = "x" And Target.Row > 16 Then
Cancel = True
Target.EntireRow.Delete
ElseIf Target = "x" Then
lngBox = MsgBox("Werte wirklich löschen?", vbYesNoCancel, "Werte löschen")
If lngBox = vbYes Then
Cancel = True
' Werte löschen und Zeile behalten. (Die Spalten müssen passend eingetragen werden!)
Range("B" & Target.Row & ",D" & Target.Row).Value = ""
'oder Zeile löschen.
'            Target.EntireRow.Delete
End If
End If
End If
End Sub
Dann kannst Du löschen oder nur die Werte herausnehmen.
Was das große Makro machen soll, habe ich nicht analysiert.
Gruß
Jürgen
Anzeige
AW: VBA Zeile hinzufügen/löschen
10.01.2020 16:53:41
MarC
Hi Jürgen,
danke für deine Hilfe. Ich habe gerade deinen Code ausprobiert doch leider wird beim einfügen der neuen Zeile immer der Text von oben runter kopiert. Die Spalte B, D und F der eingefügten Zeile müssten leer sein. Ich habs schon mit clear versucht aber dann lösche ich alles auch das X vorne =D. Desweiteren kommt die MsgBox beim löschen nur in der Zeile 16. Wenn ich jetzt 100 Zeilen mit text habe kommt nur in der Zeile 16 die Msg. Kannst du dir das bitte nochmal anschauen?
AW: VBA Zeile hinzufügen/löschen
10.01.2020 20:10:44
Werner
Hallo,
so?
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Column = 2 Then
If Target.Cells(1, 1) = "Insert new line" Then
Cancel = True
Rows(Target.Row - 1).Copy
Rows(Target.Row).Insert
Cells(Target.Row - 1, "B").ClearContents
Cells(Target.Row - 1, "D").ClearContents
Cells(Target.Row - 1, "F").ClearContents
Application.CutCopyMode = False
End If
ElseIf Target.Column = 1 And Target.Row > 16 Then
If Target = "x" Then
If MsgBox("Soll die Zeile tatsächlich gelöscht werden?", _
vbYesNo, "Löschbestätigung") = vbYes Then
Cancel = True
Target.EntireRow.Delete
End If
End If
End If
End Sub
Gruß Werner
Anzeige
Danke Werner und Jürgen
10.01.2020 22:38:12
MarC
Fast Werner bei deinem Code kam bei jedem "x" die Msg Abfrage unabhängig davon ob was in der Zeile steht oder nicht. Aber ich habe den Code geändert und jetzt geht es danke =)
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 2 Then
If Target.Cells(1, 1) = "Insert new line" Then
Cancel = True
Rows(Target.Row - 1).Copy
Rows(Target.Row).Insert
Cells(Target.Row - 1, "B").ClearContents
Cells(Target.Row - 1, "D").ClearContents
Cells(Target.Row - 1, "F").ClearContents
Application.CutCopyMode = False
End If
ElseIf Target.Column = 1 And Target.Row > 16 Then
If Target = "x" Then
If Cells(Target.Row, 2) = "" Then
Cells(Target.Row - 1, 2).Select
Target.EntireRow.Delete
Else
If MsgBox("Soll die Zeile tatsächlich gelöscht werden?", vbYesNo, "Löschbestätigung" _
) = vbYes Then
Cancel = True
Cells(Target.Row - 1, 2).Select
Target.EntireRow.Delete
Else
Cells(Target.Row, 2).Select
End If
End If
End If
End If
End Sub

Anzeige
Gerne u. Danke für die Rückmeldung. o.w.T.
10.01.2020 22:50:37
Werner

317 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige