Hallo zusammen,
ich versuche im Moment eine Tabelle zu erstellen, die durch Anwendung eines Buttons, eine Versionierung von einzelnen Datensätzen ermöglicht.
Ich bin dabei schon relativ weit gekommen und habe (mangels VBA-Know-How) auch bereits ein Makro gefunden, dass diesen Zweck weitestgehend erfüllt.
Grundsätzlich wird dabei eine neue Zeile, unterhalb des Ausgewählten Datensatzes eingefügt und der Inhalt der darüberliegenden Zeile kopiert.
Weiterhin wird in einer separaten Spalte, der Public Name (der später zu veröffentlichende Dateiname) kopiert und mit einem entsprechendem Verisonskürzel am Ende versehen.
Das funktioniert dabei auch alles einwandfrei, außer wenn zwei direkt untereinander liegende Datensätze "versioniert" werden sollen. Dann wird nämlich die Formel die den neuen Versionsnamen generiert nicht korrekt ausgeführt.
Die liegt wohl am Kopiervorgang, der durch das Einfüge-Kopier-Makro nich korrekt ausgeführt wird.
In F6 sollte also der Name: "OneDrive - Verwendung des Sync Client V2" entstehen.
Hier die Formlen die ich hinterlegt habe.
Spalte F - Neue Version: (soll abgleichen, dass die Version auch zum richtigen Datensatz gehört und den Namen generieren)
F2:
=WENN(UND(E1="Change";D1=D2);D1&" "&"V"&H2;"")
Spalte G - Count Basis: Grundlegende Zählung der Version
G2:
=ZÄHLENWENN($A1:A$2;A2)+1
Spalte H - Version Count: Endgültige Versionszählung
H2:
=WENN(UND(D1=D2;R1=R2);G1+1;G1)
Hier das Makro:
Sub BlankLine()
'Updateby20150203
Dim Rng As Range
Dim WorkRng As Range
On Error Resume Next
xTitleId = "KutoolsforExcel"
Set WorkRng = Application.Selection
Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8)
Set WorkRng = WorkRng.Columns(1)
xLastRow = WorkRng.Rows.Count
Application.ScreenUpdating = False
For xRowIndex = xLastRow To 1 Step -1
Set Rng = WorkRng.Range("A" & xRowIndex)
If Rng.Value = "Change" Then
Rng.Offset(1, 0).EntireRow.Insert Shift:=xlDown
ActiveCell.EntireRow.Copy ActiveCell.Offset(1, 0).EntireRow
End If
Next
Application.ScreenUpdating = True
End Sub
Private Sub CommandButton1_Click()
End Sub
Der Trigger den ich für die Anlage einer neuen Verision erdacht habe, ist die Auswahl des Wertes "Change" und das anschließende Betätigen des Buttons mit dem VBA Code, um die Zeile zu kopieren und unterhalb einzufügen.
Ich habe das mal in der nachfolgenden Tabelle versucht darzustellen (Auch als Anhang anbei).
Ich wäre sehr dankbar, wenn mir hier jemand weiterhelfen könnte, ich finde leider selbst keine Lösung mehr...
Vielen Dank und viele Grüße!