Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Type:=msoControlButton, ID:=850)

Forumthread: Type:=msoControlButton, ID:=850)

Type:=msoControlButton, ID:=850)
10.08.2007 15:46:00
Ina
Hallo Forum,
ich habe in einen eigenes Menü über VBA erstellt und dabei einen ControlButton mit ID:=850 eingefügt,
also eine Checkbox.
Leider habe ich es bisher nur geschafft, mit OnAction ein Makro zu verknüpfen,
wie kann ich aber den Status dieser Checkbox ändern?
Muss ich eine neue ID (ohne Checkbox) zuweisen? Wenn ja, wie mache ich den das?
Danke schonmal!
Gruß
Ina

Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Type:=msoControlButton, ID:=850)
10.08.2007 19:47:48
Original
Hi,
eine Checkbox gibt es in Commandbars nicht, das musst du über eine Abfrage der
Eigenschaft State des Button schon selbst basteln.
Poste mal deinen relevanten Code.
mfg Kurt

AW: Type:=msoControlButton, ID:=850)
13.08.2007 07:27:00
Ina
Hallo Kurt,
Danke für deine Antwort;
der Code könnte so aussehen:
Set Ma = Application.CommandBars(1).Controls.Add(Type:=msoControlPopup, temporary:=True)
Ma.Caption = "Menü 1"
Set Mb = Ma.Controls.Add(Type:=msoControlButton, ID:=850)
With Mb
.Caption = "Beispiel"
.Style = msoButtonIconAndCaption
.OnAction = "Makro1"
End With
Was meinst du, wie kann ich den State abfragen und wie könnte ich dann das Format des Buttons ändern?
Gruß
Ina

Anzeige
AW: Type:=msoControlButton, ID:=850)
13.08.2007 12:20:59
Original
Hi,
Option Explicit
Const NM$ = "Menü 1"
Dim Ma As CommandBarPopup
Dim Mb As CommandBarButton

Sub til()
Call Loesch
Set Ma = CommandBars(1).Controls.Add(Type:=10, temporary:=True)
Ma.Caption = NM
Set Mb = Ma.Controls.Add(Type:=1, ID:=850)
With Mb
.Caption = "Beispiel"
.Style = 3
.OnAction = "Makro1"
.State = 0
.FaceId = 1
End With
End Sub



Sub Makro1()
With Mb
If .State = 0 Then
.State = -1
.FaceId = 1664
MsgBox "Ein"
Else
.State = 0
.FaceId = 1
MsgBox "Aus"
End If
End With
End Sub



Sub Loesch()
On Error Resume Next
CommandBars(1).Controls(NM).Delete
End Sub


mfg Kurt

Anzeige
AW: Type:=msoControlButton, ID:=850)
13.08.2007 14:49:25
Ina
Danke Kurt, das funktioniert gut.
Habe das auch mit
Application.CommandBars.ActionControl
msoButtonUp/Down hinbekommen.
Gruß
Ina
;
Anzeige

Infobox / Tutorial

Statusänderung eines msoControlButton in Excel VBA


Schritt-für-Schritt-Anleitung

Um den Status einer Checkbox, die als msoControlButton in Excel über VBA erstellt wurde, zu ändern, folge diesen Schritten:

  1. Erstelle ein neues Menü: Du kannst ein neues Menü in Excel mit CommandBars erstellen.

    Sub til()
        Call Loesch
        Set Ma = CommandBars(1).Controls.Add(Type:=msoControlPopup, temporary:=True)
        Ma.Caption = "Menü 1"
    End Sub
  2. Füge einen msoControlButton hinzu: Füge den Button mit der ID 850 hinzu und setze die Eigenschaften.

    Set Mb = Ma.Controls.Add(Type:=msoControlButton, ID:=850)
    With Mb
        .Caption = "Beispiel"
        .Style = msoButtonIconAndCaption
        .OnAction = "Makro1"
        .State = 0 ' Setze den initialen Status
    End With
  3. Erstelle das Makro zur Statusänderung: In diesem Makro wird der Status des Buttons überprüft und geändert.

    Sub Makro1()
        With Mb
            If .State = 0 Then
                .State = -1
                .FaceId = 1664 ' Ändert das Icon
                MsgBox "Ein"
            Else
                .State = 0
                .FaceId = 1
                MsgBox "Aus"
            End If
        End With
    End Sub
  4. Lösche das Menü: Vergiss nicht, das Menü zu löschen, wenn es nicht mehr benötigt wird.

    Sub Loesch()
        On Error Resume Next
        CommandBars(1).Controls("Menü 1").Delete
    End Sub

Häufige Fehler und Lösungen

  • Fehler: Der Button erscheint nicht im Menü.

    • Lösung: Stelle sicher, dass das Menü korrekt erstellt wurde und dass das Makro til() ausgeführt wurde.
  • Fehler: Der Status des Buttons ändert sich nicht.

    • Lösung: Überprüfe, ob die ID 850 und die OnAction-Zuweisung korrekt sind. Achte darauf, dass Mb im richtigen Kontext verfügbar ist.

Alternative Methoden

Wenn du keine msoControlButton verwenden möchtest, kannst du auch andere Steuerelemente wie ActiveX- oder Formularelemente verwenden. Diese bieten meist einfachere Möglichkeiten zur Statusänderung und sind intuitiver zu handhaben.


Praktische Beispiele

Hier ist ein Beispiel, wie du eine Checkbox über ein msoControlButton steuern kannst:

  1. Erstelle das Menü und den Button.
  2. Verwende den Code, um den Status zu toggeln und Icons zu ändern.

Du kannst auch andere IDs verwenden, um verschiedene Funktionen zu implementieren, je nachdem, was du benötigst.


Tipps für Profis

  • Nutze die FaceId-Eigenschaft, um den visuellen Zustand des Buttons zu ändern.
  • Dokumentiere deinen Code gut, damit du später leichter Änderungen vornehmen kannst.
  • Experimentiere mit verschiedenen msoControlButton-IDs, um neue Funktionen zu entdecken.

FAQ: Häufige Fragen

1. Kann ich den Status des Buttons auch ohne VBA ändern? Nein, die Statusänderung eines msoControlButton erfolgt nur über VBA.

2. Welche Excel-Version wird benötigt? Die beschriebenen Funktionen sind in Excel 2007 und höher verfügbar.

3. Was ist der Unterschied zwischen msoControlButton und anderen Steuerelementen? msoControlButton ist ein spezifischer Typ von Steuerelement, das in der Ribbon-Oberfläche von Excel verwendet wird, während andere Steuerelemente möglicherweise einfacher zu handhaben sind.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige