Button erstellen via vba

Bild

Betrifft: Button erstellen via vba von: Jonny
Geschrieben am: 09.02.2005 11:34:36

Hi,

ich will einen Button per vba erstellen lassen.
Ich hab es schon mit dem Makroaufzeichner versucht. Jedoch ist dieser nicht dynamisch genung.

Ich will im Endeffekt, dass wenn man auf einen Button klickt, ein weiterer Button eine Zeile tiefer und eine Spalte weiter rechts erzeugt wird.

Ist das möglich?!

------------
Der Code vom Makroaufzeichner:



Sub Button erstellen()
    ActiveSheet.Buttons.Add(1249.5, 151.5, 86.25, 19.5).Select
    Selection.OnAction = "Best_Zeilen_Löschen"
    ActiveSheet.Shapes("Button 167").Select
    Selection.Characters.Text = "Zeile löschen"
    With Selection.Characters(start:=1, Length:=13).Font
        .Name = "Arial"
        .FontStyle = "Standard"
        .Size = 10
        .Strikethrough = False
        .Superscript = False
        .Subscript = False
        .OutlineFont = False
        .Shadow = False
        .Underline = xlUnderlineStyleNone
        .ColorIndex = xlAutomatic
    End With
End Sub

Bild


Betrifft: AW: Button erstellen via vba von: Hans W. Herber
Geschrieben am: 09.02.2005 11:53:18

Hallo Jonny,

eine Beispielarbeitsmappe findest Du hier:

Mit der rechten Maustaste hier klicken und Beispielarbeitsmappe downloaden
Dieses Beispiel wird die 2330. Arbeitsmappe der Excel-CD-ROM.


gruss hans


Bild


Betrifft: AW: Button erstellen via vba von: Jonny
Geschrieben am: 09.02.2005 11:55:16

Danke schön :o)


Bild


Betrifft: hab doch noch ein Prob. von: Jonny
Geschrieben am: 09.02.2005 12:27:46

Hi,

bei meiner Tabelle kann es sein, dass mit einem button auch 2 buttons erzeugt werden sollen, die dann untereinander stehen sollen.
Doch ist es bei diesem Code nicht möglich, bzw. der zuerst erzeugte button steht noch an seiner ursprungszeile drin. So dass sich die zwei erzeugten Button überschneiden. Ist es möglich dies zuverhindern.
Ich hab schon versucht den Befehl (Offset) umzuändern, doch ist es mir nicht gelungen, das gewollte ergebnis zu erreichen.

Ich habe die genauen Zellangaben, wo der Button stehen soll. Weiss, aber nicht diese umzusetzen...

Danke im Vorraus.


-----------------------------

Sub CreateButtons()
   Dim btn As Button
   With ActiveSheet.Buttons(Application.Caller).TopLeftCell.Offset(1, 1)
      Set btn = ActiveSheet.Buttons.Add(.Left, .Top, .Width, .Height)
      btn.Caption = "Meldung 1"
      btn.OnAction = "Meldung1"
   End With
End Sub



Bild


Betrifft: AW: hab doch noch ein Prob. von: Hans W. Herber
Geschrieben am: 09.02.2005 12:32:49

Hallo Jonny,

das mit dem überschneiden verstehe ich nicht, denn es dürfte beim Ursprungscode nicht vorkommen.

Entscheidende für die Positionierung ist folgende Zeile:
With ActiveSheet.Buttons(Application.Caller).TopLeftCell.Offset(1, 1)

Mit der vorstehenden Referenzierung wird die neue Schaltfläche eine Zeile unterhalb und eine Spalte rechts von der Ursprungsschaltfläche eingefügt.

Offset(0,1) bedeutet gleiche Zeile, eine Spalte rechts davon
Offset(-2,-1) bedeutet zwei Zeilen drüber, eine Spalte links davon

Gruss hans


Bild


Betrifft: AW: hab doch noch ein Prob. von: Hans W. Herber
Geschrieben am: 09.02.2005 12:34:12

... noch nur Überschneidung: Zur Überschneidung kann es nur kommen, wenn die erste Schaltfläche über mehrere Spalten geht. Das kannst Du dann aber über die Offset-Vorgabe ausgleichen.

Gruss hans


Bild


Betrifft: AW: hab doch noch ein Prob. von: Jonny
Geschrieben am: 09.02.2005 12:44:15

Hi hans,

also mit dem Offset habe ich schon verstanden.

Nun wenn ich auf den Button, der einen Button erzeugen soll, klicke, dann wird zuerst der Button1 eine Zeile tiefer und eine Zeile nach rechts verschoben erschaffen. Klicke ich erneut auf diesen button, dann erzeugt er noch einen Button2 eine Zeile tiefer und eine Zeile nach rechts.

Der erste erzeugte Button rutscht nicht richtig runter. Er hat nun die Größe von zwei Zellen.


Schema:

button

(klick button)

button
button1

(klick button)

button
button1/button2
button1


Bild


Betrifft: AW: hab doch noch ein Prob. von: Hans W. Herber
Geschrieben am: 09.02.2005 13:33:24

Hallo Jonny,

mir ist nicht ganz klar, ob die zusätzlichen Schaltflächen jeweils durch Klick auf die erste, bereits von Anfang an vorhandene Schaltfläche erstellt werden sollen. Wenn ja, ist die Sache relativ aufwendig, denn es muss ja Zeilen-(oder Button-)weise abgefragt werden, welche Buttons schon vorhanden sind.

Sollen die Schaltflächen allerdings revolvierend erzeugt werden, ein Klick auf die soeben erstellte Schaltfläche erzeugt eine neue usw., so ist jeder Schaltfläche der Ursprungscode zuzuweisen.

Gruss hans


Bild


Betrifft: AW: hab doch noch ein Prob. von: Jonny
Geschrieben am: 09.02.2005 13:57:41

Hi hans,

also er soll wie folgt aussehen:


https://www.herber.de/bbs/user/17724.xls


PS: Komischer Weise, klappt hier das mit den Buttons.


Bild


Betrifft: AW: hab doch noch ein Prob. von: Hans W. Herber
Geschrieben am: 10.02.2005 07:26:55

Hallo Jonny,

wenn Du mit der Löschen-Schaltfläche den erstellten Button samt darunterliegender Zeile löschen möchtest, wie folgt:

Sub Löschen()
   With ActiveSheet.Buttons(Application.Caller)
      Rows(.TopLeftCell.Row).Delete
      .Delete
   End With
End Sub

gruss hans


 Bild

Beiträge aus den Excel-Beispielen zum Thema "Button erstellen via vba"