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

Neue Zeile ganz oben einfügen VBA

Neue Zeile ganz oben einfügen VBA
16.12.2020 13:00:21
David
Guten Tag,
da mir hier bereits schon geholfen wurde, hätte ich noch ein anliegen.
Mit dem unten stehenden Code, wird immer die nächst freie Zelle einen
Eintrag eingefügt.
Ich möchte aber das er immer in Zeile 2 eine neue Zeile einfügt und dort die Werte einträgt,
so das im Prinzip immer die neuesten Werte ganz oben stehen (Zeile 1 ist die Überschrift).
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) Dim ErsteFreieZeile As Long If Target.Count = 1 Then If Not Intersect(Target, Sh.Range("A1:AS47")) Is Nothing Then Application.EnableEvents = False With Worksheets("Protokoll") ErsteFreieZeile = .Cells(.Rows.Count, 1).End(xlUp).Row + 1 .Unprotect Password:="xxx" .Cells(ErsteFreieZeile, 1) = Sh.Name .Cells(ErsteFreieZeile, 2) = Target.Address(0, 0) .Cells(ErsteFreieZeile, 3) = Target.Value .Cells(ErsteFreieZeile, 4) = Date .Cells(ErsteFreieZeile, 5) = Time .Cells(ErsteFreieZeile, 6) = Environ("username") .Protect Password:="xxx" End With Application.EnableEvents = True End If End If End Sub
Vielen Dank.

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

Betreff
Datum
Anwender
Anzeige
AW: Neue Zeile ganz oben einfügen VBA
16.12.2020 13:02:32
David
Hier der Quellcode nochmal ordentlich
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim ErsteFreieZeile As Long
If Target.Count = 1 Then
If Not Intersect(Target, Sh.Range("A1:AS47")) Is Nothing Then
Application.EnableEvents = False
With Worksheets("Protokoll")
ErsteFreieZeile = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
.Unprotect Password:="Urlaub"
.Cells(ErsteFreieZeile, 1) = Sh.Name
.Cells(ErsteFreieZeile, 2) = Target.Address(0, 0)
.Cells(ErsteFreieZeile, 3) = Target.Value
.Cells(ErsteFreieZeile, 4) = Date
.Cells(ErsteFreieZeile, 5) = Time
.Cells(ErsteFreieZeile, 6) = Environ("username")
.Protect Password:="Urlaub"
End With
Application.EnableEvents = True
End If
End If
End Sub

Anzeige
AW: Neue Zeile ganz oben einfügen VBA
16.12.2020 13:11:10
Yal
Hallo David,
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim ErsteFreieZeile As Long
Dim i
If Target.Count = 1 Then
If Not Intersect(Target, Sh.Range("A1:AS47")) Is Nothing Then
Application.EnableEvents = False
With Worksheets("Protokoll")
.Unprotect Password:="Urlaub"
For i = 1 To 2
ErsteFreieZeile = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
.Cells(ErsteFreieZeile, 1) = Sh.Name
.Cells(ErsteFreieZeile, 2) = Target.Address(0, 0)
.Cells(ErsteFreieZeile, 3) = Target.Value
.Cells(ErsteFreieZeile, 4) = Date
.Cells(ErsteFreieZeile, 5) = Time
.Cells(ErsteFreieZeile, 6) = Environ("username")
Next
.Protect Password:="Urlaub"
End With
End If
End If
Application.EnableEvents = True
End Sub
VG
Yal
Anzeige
AW: Neue Zeile ganz oben einfügen VBA
16.12.2020 13:39:36
David
Hallo Yal,
vielen Dank für die schnelle Antwort.
Funktioniert leider nicht, jetzt schreibt Excel immer zwei Zeilen ganz unten.
Muss man Excel nicht erklären, zuerst Zeile 2 als neue Zeile einfügen dann den normalen Prozess weiter?
AW: Neue Zeile ganz oben einfügen VBA
16.12.2020 13:52:25
Yal
Ach so. Falsch verstanden.
In deinem originalen Coding:
ErsteFreieZeile = .Cells(.Rows.Count, 1).End(xlUp).Row + 2
verwenden: plus zwei am Ende anstatt plus eins.
Versuche immer den Coding zu lesen und verstehen. Die Anstrengung wird schnell belohnt!
VG
Yal
AW: Neue Zeile ganz oben einfügen VBA
16.12.2020 14:02:17
Rolf
Hallo David
diese Zeile: ErsteFreieZeile = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
ersetzen durch: .Rows("2:2").Insert Shift:=xlDown
ErsteFreieZeile = 2
oder statt der Variablen in allen betreffenden Zeilen gleich .cells(2,1) usw. schreiben.
Gruß Rolf
Anzeige
AW: Neue Zeile ganz oben einfügen VBA
17.12.2020 11:46:57
David
Das hat soweit funktioniert, jetzt wollte ich aber das beim einfügen der zweiten Zeile nicht das Format von der Überschrift kopiert sondern einfach immer das Format aus der unteren Zeile übernimmt.
Laut Excel bin ich auf diese Formel gestoßen und habe ich auch eingepflegt.
.Rows("2:2").Insert CopyOrigin:=xlFormatFromRightOrBelow
ErsteFreieZeile = 2
Das komische ist, beim ersten mal klappt es, beim zweiten mal zeigt er mir ein Fehler an.
Hier scheint wohl ein Denkfehler zu sein?
AW: Neue Zeile ganz oben einfügen VBA
18.12.2020 12:24:17
Yal
Moin,
markiere eine Zelle und rufe abwechselnd eine von diese beiden Subs (Alt+F8)
Sub FormatVonOben_uebernehmen()
Selection.EntireRow.Insert CopyOrigin:=xlFormatFromLeftOrAbove
End Sub
Sub FormatVonUnten_uebernehmen()
Selection.EntireRow.Insert CopyOrigin:=xlFormatFromRightOrBelow
End Sub
Schaue wie es sich auf der Formatierung auswirkt. Ich hatte es nicht gewusst und werde es schnell vergessen. Aber forschen und probieren, das kann ich gut.
Viel Erfolg
Yal
Anzeige

317 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige