Thema Datum  Von Nutzer Rating
Antwort
12.12.2016 10:45:25 Cederic
NotSolved
12.12.2016 12:17:57 Mackie
NotSolved
12.12.2016 12:44:15 Gast13855
NotSolved
12.12.2016 12:59:20 Mackie
NotSolved
Rot Makro Excel
12.12.2016 14:44:39 Trägheit
NotSolved
12.12.2016 14:52:42 Gast37304
NotSolved

Ansicht des Beitrags:
Von:
Trägheit
Datum:
12.12.2016 14:44:39
Views:
669
Rating: Antwort:
  Ja
Thema:
Makro Excel

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


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
12.12.2016 10:45:25 Cederic
NotSolved
12.12.2016 12:17:57 Mackie
NotSolved
12.12.2016 12:44:15 Gast13855
NotSolved
12.12.2016 12:59:20 Mackie
NotSolved
Rot Makro Excel
12.12.2016 14:44:39 Trägheit
NotSolved
12.12.2016 14:52:42 Gast37304
NotSolved