Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Schaltfläche in bestimmter Zelle positionieren

Forumthread: Schaltfläche in bestimmter Zelle positionieren

Schaltfläche in bestimmter Zelle positionieren
10.05.2007 15:25:42
uli
Hallo
Ich möchte gerne per Makro automatisch in mehreren Zellen Befehlschaltflächen erstellen lassen.
Dabei habe ich zwei Probleme:
1. Wie kann ich der Befehlschaltfläche eine genaue Zelle als Position angeben? (habs mal mit dem Makrorecorder versucht. Dieser positioniert allerdings mit top und left)
2. Wie kann ich jeder Befehlschaltfläche anschließend (auch automatisch) ein weiteres Makro zuweisen (Jedesmal das gleiche, was ausgeführt werden soll, wenn man irgendeine der Schlatflächen drückt).
Hoffe, ihr könnt mir weiterhelfen
Gruß
Uli

Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Schaltfläche in bestimmter Zelle positionieren
10.05.2007 15:45:00
Rudi
Hallo,

Sub tt()
Dim myBtn As Object, i As Integer
For i = 3 To 9 Step 2
Set myBtn = ActiveSheet.Buttons.Add(1, 1, 1, 1)
With myBtn
.Top = Cells(i, 3).Top
.Left = Cells(i, 3).Left
.Height = Cells(i, 3).Height
.Width = Cells(i, 3).Width
.Caption = "Test " & i
.OnAction = "Makro2"
End With
Next i
End Sub


Gruß
Rudi
Eine Kuh macht Muh, viele Kühe machen Mühe

Anzeige
AW: Schaltfläche in bestimmter Zelle positionieren
10.05.2007 15:54:00
uli
Hallo Rudi,
genau das löst mein Problem. Hatte schon die Befürchtung mich unverständlich ausgedrückt zu haben. Vielen Dank an dich!!!. Nur eine Frage am Rande, was bedeutet die (1,1,1,1) hinter "Add"?
Gruß
Uli

AW: Schaltfläche in bestimmter Zelle positionieren
10.05.2007 16:10:44
Rudi
Hallo,
die Parameter müssen sein. left, top, width, height
Ich hätte auch

Sub tt()
Dim myBtn As Object, i As Integer
For i = 3 To 9 Step 2
Set myBtn = ActiveSheet.Buttons.Add(Cells(i, 3).Left, Cells(i, 3).Top, Cells(i, 3).Width,  _
Cells(i, 3).Height)
With myBtn
.Caption = "Test " & i
.OnAction = "Makro2"
End With
Next i
End Sub


schreiben können.
Gruß
Rudi
Eine Kuh macht Muh, viele Kühe machen Mühe

Anzeige
AW: Schaltfläche in bestimmter Zelle positionieren
11.05.2007 01:00:00
uli
zu früh gefreut...
Leider gibt es doch noch ein Problem.
Beim Klicken der Befehlschaltfläche soll ja ein Makro geöffnet werden (immer das Selbe, egal welcher Button).
Jetzt ist mir allerdings aufgefallen, dass das Makro, welches nach dem Drücken der Schaltfläche ausgeführt werden soll, einen Zellenwert (Nachname, Vorname) benutzen soll, der neben der jeweiligen Befehlschaltfläche, die gedrückt worden ist, steht.
Weiß jemand, wie ich diesen Namen selektieren kann?
Gruß
Uli

Anzeige
AW: Schaltfläche in bestimmter Zelle positionieren
11.05.2007 03:53:00
Mustafa
Hallo Uli,
deklariere I als Globale Variable mit "Public i as Integer"
Dann kannst du in deinem Makro auf den Wert in I zugreifen und so die aktuelle Zeile mit wählen.
In deinem Makro musst du dann nur noch den wert der Spalte eingeben.
zB
Cells(i,2)
Damit hast du den wert der links neben dem Button steht.
Rückmeldung obs Hilft wäre nett.
Viele Grüße aus Köln.

Anzeige
AW: Schaltfläche in bestimmter Zelle positionieren
11.05.2007 09:17:00
Uli
Hallo Mustafa,
Vielen Dank für deine Antwort.
Leider verstehe ich noch nicht genau was du meinst.
Ich habe zwei Makros.
Makro1 erstellt mir automatisch die Buttons in Spalte1 in (fast) jeder Zelle.
Beim Drücken eines dieser Buttons wird Makro2 ausgeführt.
Makro2 benötigt zum Berechnen einiger Werte die Zeilennummer des Buttons
Wo soll ich die Variable I deklarieren?
Makro1 erstellt, wie du am Code von Rudi sehen kannst, die Buttons über eine Schleife. Wenn ich mir die Position innerhalb der Schleife merke, wird sie jedesmal überschrieben, so daß sich doch I dann nur die Zeile des letzten Buttons merkt, oder?
In Makro2 wird es schon zu spät sein. Denn wenn Makro2 ausgeführt wird, kann ja nicht mehr nachvollzogen werden, welcher Button das Ausführen initiiert hat.
Gruß
Uli

Anzeige
AW: Schaltfläche in bestimmter Zelle positionieren
11.05.2007 12:34:51
Rudi
Hallo,
versuch mal:

Sub tt()
Dim myBtn As Object, i As Integer
For i = 3 To 9 Step 2
Set myBtn = ActiveSheet.Buttons.Add(Cells(i, 3).Left, Cells(i, 3).Top, _
Cells(i, 3).Width, Cells(i, 3).Height)
With myBtn
.Name = "Button_" & (i - 1) / 2
.Caption = "Test " & (i - 1) / 2
.OnAction = "Makro2"
End With
Next i
End Sub



Sub makro2()
MsgBox ActiveSheet.Shapes(Application.Caller).Name
End Sub


Gruß
Rudi
Eine Kuh macht Muh, viele Kühe machen Mühe

Anzeige
AW: Schaltfläche in bestimmter Zelle positionieren
11.05.2007 16:30:00
uli
Hallo Rudi,
toll, funktioniert super.
Hab schon den ganzen Morgen über dem Problem gegrübelt. Mit meinen 10-20 Befehlen die ich bei VBA kenne, bin ich aber nicht weit gekommen. Vielen Dank nochmal!
Gruß
Uli
;
Anzeige
Anzeige

Infobox / Tutorial

Schaltflächen in Excel: Positionieren und Zuweisen von Makros


Schritt-für-Schritt-Anleitung

Um Schaltflächen in einer bestimmten Zelle in Excel zu positionieren und diese einem Makro zuzuweisen, kannst du die folgenden Schritte ausführen:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Erstelle ein neues Modul, indem du im Projektfenster mit der rechten Maustaste auf "VBAProject" klickst und "Einfügen" > "Modul" auswählst.

  3. Füge den folgenden VBA-Code in das Modul ein:

    Sub tt()
       Dim myBtn As Object, i As Integer
       For i = 3 To 9 Step 2
           Set myBtn = ActiveSheet.Buttons.Add(Cells(i, 3).Left, Cells(i, 3).Top, _
           Cells(i, 3).Width, Cells(i, 3).Height)
           With myBtn
               .Caption = "Test " & i
               .OnAction = "Makro2"
           End With
       Next i
    End Sub
  4. Schließe den VBA-Editor und kehre zu Excel zurück.

  5. Führe das Makro tt aus, um die Schaltflächen in den angegebenen Zellen zu erstellen.


Häufige Fehler und Lösungen

  • Problem: Schaltflächen erscheinen nicht in der gewünschten Zelle.
    Lösung: Überprüfe, ob du die genaue Position mit .Top und .Left der Zelle angibst. Stelle sicher, dass die Zellen, in denen du die Schaltflächen platzieren möchtest, sichtbar sind.

  • Problem: Das zugewiesene Makro wird nicht ausgeführt.
    Lösung: Überprüfe, ob der Name des Makros korrekt ist und dass das Makro in demselben Projekt wie die Schaltflächen definiert ist.


Alternative Methoden

Eine alternative Methode zur Erstellung von Schaltflächen ist die Verwendung von ActiveX-Steuerelementen. Du kannst diese direkt über die Entwicklertools in Excel einfügen. Gehe dazu so vor:

  1. Aktiviere die Entwicklertools in Excel, falls sie nicht sichtbar sind.
  2. Wähle "Einfügen" und dann "ActiveX-Steuerelemente" aus.
  3. Füge eine Schaltfläche hinzu und klicke mit der rechten Maustaste darauf, um die Eigenschaften zu bearbeiten und das zugewiesene Makro auszuwählen.

Praktische Beispiele

Hier ist ein Beispiel für ein Makro, das beim Drücken einer Schaltfläche eine Nachricht anzeigt:

Sub Makro2()
    MsgBox "Du hast die Schaltfläche " & ActiveSheet.Shapes(Application.Caller).Name & " gedrückt."
End Sub

Durch die Verwendung von Application.Caller kannst du ermitteln, welcher Button gedrückt wurde, und darauf basierend Aktionen ausführen.


Tipps für Profis

  • Nutze globale Variablen, um den Status zwischen verschiedenen Makros zu speichern. Deklariere z.B. Public i As Integer am Anfang deines Moduls, um die Zeilennummer zwischen den Schaltflächen zu übermitteln.
  • Organisiere deinen VBA-Code in Module und verwende Kommentare, um den Code besser nachvollziehbar zu machen.
  • Teste deinen Code regelmäßig, um sicherzustellen, dass alle Schaltflächen korrekt funktionieren.

FAQ: Häufige Fragen

1. Wie kann ich die Größe der Schaltflächen anpassen?
Du kannst die Höhe und Breite der Schaltflächen im VBA-Code anpassen, indem du die Height- und Width-Eigenschaften in der With-Anweisung änderst.

2. Kann ich das Aussehen der Schaltflächen ändern?
Ja, du kannst die Eigenschaften wie Caption, Font, BackColor und viele andere anpassen, um das Aussehen der Schaltflächen zu ändern.

3. Was mache ich, wenn ich mehrere Makros zuweisen möchte?
Du kannst die OnAction-Eigenschaft jeder Schaltfläche auf verschiedene Makros setzen, indem du den Namen des entsprechenden Makros in der With-Anweisung anpasst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige