Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1392to1396
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

Neuen Datensatz einfügen über VBA

Neuen Datensatz einfügen über VBA
19.11.2014 09:16:42
Tom
Guten Morgen zusammen,
ich möchte per Button eine von mir definierte Zeile mit allen darin enthaltenen Formatierungen kopieren und als neuen Datensatz einfügen. Wie lässt sich das über VBA am besten lösen?
Zudem soll das manuelle Einfügen einer Zeile unterbunden werden.
Wie lässt sich das über VBA am besten lösen?
Vielen Dank schon einmal vorab.
Gruß Tom

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Neuen Datensatz einfügen über VBA
19.11.2014 10:00:27
Werner
Hallo Tom,
schau dir das Beispiel mal an, das habe ich vor einiger Zeit mal für jemanden gemacht. Bei Doppelklick in eine Zelle der Spalte A öffnet sich eine Eingabebox in der du eingeben kannst, wieviele Leerzeilen eingefügt werden sollen. Im weiteren Verlauf wird die angeklickte Zeile kopiert, darunter eingefügt und die Werte aus der eingefügten Zeile entfernt. So hast du dann eine "leere" Zeile mit den Formeln und Formatierungen der Zeile darüber.
Vielleicht kannst du damit ja was anfangen.
https://www.herber.de/bbs/user/92171.xlsm
Gruß Werner

Anzeige
AW: Neuen Datensatz einfügen über VBA
19.11.2014 10:50:20
Tom
Hallo Werner,
super, das ist es!!!!! Die Eingabebox nehme ich raus und erweitere um eine Zeile nach jedem Doppelklick.
Vielen DANK!!!
Gruß Tom

AW: Danke für die Rückmeldung owT
19.11.2014 10:59:36
Werner

AW: Neuen Datensatz einfügen über VBA
19.11.2014 11:15:28
Tom
Hallo noch einmal,
ich hätte da noch eine Frage.
Durch den Doppelklick der eine neue Zeile einfügt, soll gleichzeitig in der angeklickten Zelle das heute Datum eingefügt werden. Wie muss der Code erweitert werden?
Gruß Tom
Private Sub Worksheet_BeforeDoubleClick(ByVal target As Range, cancel As Boolean)
Dim zeilenanzahl As Long
Dim x As Integer
Dim i As Integer
x = 1
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
If target.Column = 1 Then
On Error GoTo Notausgang
zeilenanzahl = 1
With ActiveCell
For i = 1 To zeilenanzahl
If ActiveCell = "" Then
.EntireRow.Copy
.EntireRow.Offset(x, 0).Insert shift:=xlDown
.EntireRow.Offset(x, 0).PasteSpecial
ActiveCell = 1
.EntireRow.Offset(x, 0).SpecialCells(xlCellTypeConstants).ClearContents
Else
.EntireRow.Copy
.EntireRow.Offset(x, 0).Insert shift:=xlDown
.EntireRow.Offset(x, 0).PasteSpecial
.EntireRow.Offset(x, 0).SpecialCells(xlCellTypeConstants).ClearContents
ActiveCell.Offset(-x, 0).Select
End If
x = x + 1
Next i
.Offset(1, 0).Select
End With
Application.CutCopyMode = False
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
Notausgang:
cancel = True
Application.CutCopyMode = False
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
Exit Sub
End If
End Su

Anzeige
AW: Neuen Datensatz einfügen über VBA
19.11.2014 11:46:26
Werner
Hallo Tom,
so?
Private Sub Worksheet_BeforeDoubleClick(ByVal target As Range, cancel As Boolean)
Dim zeilenanzahl As Long
Dim x As Integer
Dim i As Integer
x = 1
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
If target.Column = 1 Then
On Error GoTo Notausgang
zeilenanzahl = 1
With ActiveCell
For i = 1 To zeilenanzahl
If ActiveCell = "" Then
.Value = Date
.EntireRow.Copy
.EntireRow.Offset(x, 0).Insert shift:=xlDown
.EntireRow.Offset(x, 0).PasteSpecial
.EntireRow.Offset(x, 0).SpecialCells(xlCellTypeConstants).ClearContents
Else
.EntireRow.Copy
.EntireRow.Offset(x, 0).Insert shift:=xlDown
.EntireRow.Offset(x, 0).PasteSpecial
.EntireRow.Offset(x, 0).SpecialCells(xlCellTypeConstants).ClearContents
ActiveCell.Offset(-x, 0).Select
.Value = Date
End If
x = x + 1
Next i
.Offset(1, 0).Select
End With
Application.CutCopyMode = False
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
Notausgang:
cancel = True
Application.CutCopyMode = False
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
Exit Sub
End If
End Sub
Gruß Werner

Anzeige
AW: Neuen Datensatz einfügen über VBA
19.11.2014 13:10:53
Tom
Hallo Werner,
noch nicht ganz....das Datum soll sofort bei der Erstellung der neuen Zeile in der neuen Zelle einfügt werden. Aktuell wird das Datum für die Zelle davor, beim Neueinfügen einer Zeile gesetzt.
Gruß Tom

AW: Neuen Datensatz einfügen über VBA
19.11.2014 14:26:21
Werner
Hallo Tom,
dann schau dir mal an was du geschrieben hattest: "In der angeklickten Zelle soll das Datum eingefügt werden". Tatsächlich soll das Datum jetzt aber in der neuen Zelle eingetragen werden.
Ich hab jetzt mal die ganzen Variablendeklarationen und das For - Next raus geschmissen, das war nur nötig in Verbindung mit der Eingabebox. Zudem habe ich die IF-Abfrage raus geschmissen, die war/ist nur nötig wenn auch bei/nach leeren Zellen in Spalte A eine Leerzeile eingefügt werden sollte.
Private Sub Worksheet_BeforeDoubleClick(ByVal target As Range, cancel As Boolean)
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
If target.Column = 1 Then
On Error GoTo Notausgang
With ActiveCell
.EntireRow.Copy
.EntireRow.Offset(1, 0).Insert shift:=xlDown
.EntireRow.Offset(1, 0).PasteSpecial
.EntireRow.Offset(1, 0).SpecialCells(xlCellTypeConstants).ClearContents
.Offset(1, 0) = Date
.Offset(1, 0).Select
End With
Application.CutCopyMode = False
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
Notausgang:
cancel = True
Application.CutCopyMode = False
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
Exit Sub
End If
End Sub
Gruß Werner

Anzeige
AW: Neuen Datensatz einfügen über VBA
20.11.2014 10:49:56
Tom
Hallo Werner,
stimmt, sorry! Ja, jetzt ist es perfekt. Herzlichen Dank!
Gruß Tom

AW: Danke für die Rückmeldung
20.11.2014 17:53:56
Werner

AW: Neuen Datensatz einfügen über VBA
19.11.2014 11:48:42
Matthias
Hallo
Ganz schön viel Aufwand um nur eine Zeile zu kopieren
'Rows(DeineZeile).Copy Destination:=Rows(ZielZeile)
 Rows(2).Copy Destination:=Rows(4)

So wird die Zielzeile allerdings überschrieben.


So wird nach unten verschoben
Rows(DeineZeile).Copy
Rows(ZielZeile).Insert Shift:=xlDown
Application.CutCopyMode = False
Ein Beispiel:
https://www.herber.de/bbs/user/93869.xlsm
Gruß Matthias
Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige