Hi Cederic.
Hier ein minimalistisches Beispiel von mir:
A4:B4 enthält die Vorlage. Die Schaltfläche ist eine sogenannte "Formularschaltfläche" der du per Rechtsklick ein Makro zuweisen kannst. Sollte dieser Eintrag im Popup-Menü bei dir nicht vorhanden sein, dann hast du deren ActiveX-Verwanten eingefügt. Dieses Beispiel funktioniert nur mit der "Formularschaltfläche".
Hierzu nun zwei Makros (Pack diese in ein Modul - Rechtsklick im VBA Projekt Explorer -> Einfügen -> Modul):
Option Explicit
Public Sub BTNAddLine()
If Not TypeOf ActiveSheet Is Excel.Worksheet Then
Call MsgBox("'BTNAddLine'-Makro ist nur für Tabellenblätter bestimmt.", vbExclamation)
Exit Sub
End If
Dim vntResult As Variant
vntResult = Application.Caller
If VarType(vntResult) <> vbString Then Exit Sub
Set vntResult = ActiveSheet.Shapes(vntResult)
If vntResult.Type <> msoFormControl Then Exit Sub
If vntResult.FormControlType <> xlButtonControl Then Exit Sub
Call ActiveSheet.Range("A4:P4").Copy(vntResult.TopLeftCell)
vntResult.Top = vntResult.TopLeftCell.Offset(1).Top + (vntResult.Top - vntResult.TopLeftCell.Top)
End Sub
Public Sub InitBTNAddLine()
If Not TypeOf ActiveSheet Is Excel.Worksheet Then
Call MsgBox("'InitBTNAddLine'-Makro ist nur für Tabellenblätter bestimmt.", vbExclamation)
Exit Sub
End If
Dim vntResult As Variant
vntResult = Application.Caller
If VarType(vntResult) <> vbString Then Exit Sub
Set vntResult = ActiveSheet.Shapes(vntResult)
If vntResult.Type <> msoFormControl Then Exit Sub
If vntResult.FormControlType <> xlButtonControl Then Exit Sub
With ActiveSheet.Range("A4:P4").CurrentRegion
With .Rows(.Rows.Count).Cells(1).Offset(1)
vntResult.Left = .Left + 0.15 * .Width
vntResult.Top = .Top + 0.5 * .Height
End With
End With
End Sub
Weise der Schaltfläche zuerst das Makro InitBTNAddLine zu und klicke dann auf die Schaltfläche. Dadurch wird die Position der Schaötfläche neu gesetzt.
Anschließend kannst du jenes Makro gerne auskommentieren, es nicht weiter von Nöten.
Jetzt weise der Schaltfläche das Makro BTNAddLine zu und klicke anschließend darauf. Dies fügt eine neue Zeile hinzu, jedes mal wenn man darauf klickt und die Schaltfläche wird eins nach unten verschoben. Die Vorlage ist immer der Bereich A4:P4 (im Makro änderbar).
Wichtig/Anmerkung: Die Position des Buttons wird zum ermitteln des Einfügepunkts verwendet, weshalb dieser richtig positioniert sein muss, um zu funktionieren. Das ließe s ich aber auch noch ändern.
Grüße
Trägheit
|