Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1932to1936
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Commandbar

Commandbar
28.05.2023 07:24:35
Neuer VBA

Hallo,
ich lasse mir eine neue Commandbar mit Namen von MA erstellen.
Wenn ich dann auf den Button von dem MA klicke, soll der Name ausgegeben werden.
Wie bekomme ich das hin?

Public i As Integer, Reihe As Integer
Private Sub MA_Namen_1()
Dim cmdBar As CommandBar
Set cmdBar = Application.CommandBars.Add("MA_Namen_1", msoBarTop, Temporary:=True)
Reihe = 1
MA = Cells(Reihe, 1).Value
With cmdBar
.Name = "MA_Namen_1"
.RowIndex = 2
.Position = msoBarTop
.Visible = True
For i = 1 To 36
With .Controls.Add(Type:=msoControlButton, Temporary:=True)
.Style = msoButtonIconAndCaption
.Caption = MA
.OnAction = "NamenAusgeben"
End With
Reihe = Reihe + 1
MA = Cells(Reihe, 1).Value
Next i

End With
End Sub

24
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Commandbar
28.05.2023 08:38:48
Alwin WeisAngler
Hallo,
das geht nur über eine Klasse, da du ja das Klickereignis abfragen willst.
Lade mal deinen bisherigen Zustand hoch und erkläre uns wo das Control wie verwendet werden soll.
Ich weise dich deshalb darauf hin, da manches im UI (Ausgabe im Ribbonband) anzulegen ist, dann manches z.B. Sidemenü Manipulation (Listbox ...).
Ich will dich nicht abschrecken, aber mir ist nur der Weg über eine Klasse bekannt.
Anbei mal ein Beispiel eines Sidemenü für eine Listbox, was ich mal für jemanden zusammengestellt hatte. Der war wohl leider völlig überfordert damit
https://www.ms-office-forum.net/forum/showpost.php?p=2107806&postcount=15

Gruß Uwe


Anzeige
AW: Commandbar
28.05.2023 10:09:48
Neuer VBA
Die Commandbar zeigt mir Namen von MA an.
Wenn ich auf den Namen Klicke, soll der Name in die Aktive Zelle geschrieben werden.

Mit "Application.caller(...)" bekomme ich jedoch nur den Namen, oder die Position des Buttons angezeigt.


AW: Commandbar
28.05.2023 10:29:52
Alwin WeisAngler
Ja, das habe ich schon verstanden. Du musst das _Click Ereignis des gedrückten Buttons auswerten und dazu brauchst du eine Klasse.
Mittels Arrays liest du alle msoControlButton des CommandBars Objectes ein und in der Klasse kannst du das Klickereignis auswerten und den Namen in die Zelle schreiben.
Lade einfach anonymisiert eine inhaltsgerechte Demodatei hoch. Dann wird dir auch geholfen werden. Da ich eben Besuch bekommen habe, kann ich erst heute Abend spät die Demo von dir anschauen und entsprechend weiterhelfen.

Gruß Uwe


Anzeige
AW: Commandbar
28.05.2023 12:59:10
mumpel
Hallo!

Da Du Office 365 nutzt, würde ich das eher über RibbonX machen. Da brauchst Du keine Klasse. Siehe Beispieldatei. Nach dem Öffnen findest Du im Tab "Start" ganz vorn vor "Zwischenablage" eine neue Gruppe mit einem Auswahlmenü. Der Inhalt des Menüs kommt aus dem Blatt "MenuDescription". DIe Liste kannst Du dann immer erweitern. Das Blatt "MenuDescription" kannst DU bei Bedarf auch ausblenden.

https://www.herber.de/bbs/user/159358.xlsm

Und siehe RibbonX-Workshop - Dynamisches Menü

Gruß, René


Anzeige
AW: Commandbar
28.05.2023 13:20:41
Neuer VBA
Hallo Renè,

Danke für deine Antwort.

Funktioniert auch einwandfrei.

Allerdings möchte ich nicht, dass die Anwender bei mehr als 30 oder 40 Namen scrollen müssen.
Deswegen währe mir meine Lösung lieber, falls ich damit zum Ziel komme.


AW: Commandbar
28.05.2023 13:27:40
mumpel
Bei Deiner Lösung passt es aber auch nicht auf einen Bildschirm.


AW: Commandbar
28.05.2023 13:38:02
mumpel
Wieviele Mitarbeiter werden es denn maximal?

Ein Vorschlag:
Schau in "Dynamisches Menü - Teil 3" oder in "Dynamisches Menü - Teil 4". Das wäre vielleicht etwas für Dich. Die Mitarbeiter nach Alphabet je ein Untermenü, vielleicht je Anfangsbuchstabe nochmal strukturieren.


Anzeige
AW: Commandbar
28.05.2023 18:18:03
Herbert_Grom
Hallo,

du schreibst: "ich lasse mir eine neue Commandbar mit Namen von MA erstellen." Wer erstellt dir die CB?
Wenn du dir "eine neue Commandbar ... erstellen" lässt, ist Mumpels Vorschlag doch perfekt.

Weiter schreibst du: Wenn ich dann auf den Button von dem MA klicke, soll der Name ausgegeben werden. Wo ist da ein "Button"?

Userbild

Servus


AW: Commandbar
28.05.2023 18:52:47
Neuer VBA
Ich hatte eine Beispieldatei hochgeladen.
Wenn man das Makro "MA_Namen_1" ausführt, wird die CB erstellt.


Anzeige
AW: Commandbar
28.05.2023 19:27:35
mumpel
Erkläre bitte mal das genaue Ziel. Wieviele Mitarbeiter sind es? Wieviele Namen werden es maximal je CB?


AW: Commandbar
28.05.2023 19:44:50
Neuer VBA
Das Ziel ist, das man den Namen eines MA durch anklicken in eine bestimmte Zelle übernehmen kann.

Meine CB stellt mir in 4 Reihen a 15 Namen insgesamt 60 Namen zur Verfügung.
Also kein scrollen oder ähnliches.
Nimmt auch nicht mehr Platz ein, als die Standard CB

Das klappt auch.

Aber wenn ich den Namen anklicke, komme ich nicht zum Ergebnis.


Anzeige
AW: Commandbar
28.05.2023 20:49:58
Ulf

Option Explicit

Public i As Integer, Reihe As Integer
Public bAktiv As Boolean

Public Sub erstelleBar()
    Dim strMA As String
    Dim cmdBar As CommandBar
    Dim cmbButton As CommandBarButton
    bAktiv = False
    Dim bFound As Boolean
    For Each cmdBar In Application.CommandBars
        If cmdBar.Name = "MA_Namen_1" Then
            bFound = True
            Exit For
        End If
    Next
    If bFound Then
        Application.CommandBars("MA_Namen_1").Delete
    End If
    Set cmdBar = Application.CommandBars.Add("MA_Namen_1", msoBarTop, Temporary:=True)
    Reihe = 1
    strMA = Cells(Reihe, 1).Value
    With cmdBar
        .Name = "MA_Namen_1"
        .RowIndex = 2
        .Position = msoBarTop
        .Visible = True
        For i = 1 To 36
            Set cmbButton = .Controls.Add(Type:=msoControlButton, Temporary:=True)
            With cmbButton
                .Style = msoButtonIconAndCaption
                .Caption = strMA
                .Tag = strMA
                .OnAction = "NamenAusgeben"
            End With
            Reihe = Reihe + 1
            strMA = Cells(Reihe, 1).Value
        Next i
    End With
    bAktiv = True
End Sub

Public Sub NamenAusgeben() 'ByRef cmbButton As CommandBarButton)
    If bAktiv Then
        'Aufruf anpassen
        MsgBox CommandBars.ActionControl.Tag, vbInformation, "Pressed"
    End If
End Sub


Anzeige
AW: Commandbar
29.05.2023 03:12:58
Neuer VBA
Hallo Ulf,

Klappt Super, vielen Dank dafür.

Eine Frage noch, Die CB wird mir als "Add-Ins" angezeigt.
Kann ich beim erstellen der CB einen anderen Namen vergeben?

Gruß
Martin


AW: Commandbar
29.05.2023 08:16:44
Ulf
Hi Martin
Durchlaufe die Schleife:

For Each cmdBar In Application.CommandBars
Debug.Print cmdBar.Name
Next
Dann kannst du die gewünschte auswählen
hth
Ulf


AW: Commandbar
29.05.2023 09:11:21
Neuer VBA
Hallo Ulf,

was ich Meinte war, dass in der Menüleiste mein Menü neben "Überprüfen", "Ansicht",... als "Add-Ins" angezeigt wird.
Hier würde ich gerne einen eigenen Namen vergeben.

Gruß
Martin


Anzeige
AW: Commandbar
29.05.2023 09:21:56
mumpel
Den Namen kannst Du nicht ändern. Es handelt sich um einen Systemnamen. In "Add-Ins" landen alle Symbolleisten und Menüs aus Excel 97-2003. Wenn Du einen anderen Namen haben möchtest, geht das nur mit einer RibbonX-Programmierung.


AW: Commandbar
29.05.2023 09:28:55
Neuer VBA
OK, dann ist das eben so.

Danke für deine Hilfe, bin jetzt fast am Ziel.

Eine Frage noch, wenn ich die Namen der MA in meine CB schreiben lasse, stehen diese alle nebeneinander.
Gibt es eine Möglichkeit, ab einem bestimmten Eintrag (z.B. ab dem 15.en) eine zweite, oder auch dritte Zeile zu generieren?

Gruß
Martin


Anzeige
AW: Commandbar
29.05.2023 11:01:08
mumpel
Das geht nur, wenn Du vor dem Generieren der Symbolleiste die Bildschirmauflösung ausliest (dazu braucht es umfangreiches API), dann kannst Du die Namen auf mehrere Symbolleisten aufteilen. Einen Zeilenumbruch gibt es in Symbolleisten nicht. Symbolleisten sind immer einzeilig. Anders als das Menüband (RibbonX), das kann man Dreizeilig programmieren (aber auch nur statisch, nicht dynamisch). Deshalb wäre es ja besser, wenn Du das in Menüs oder Auswahlfelder (ComboBox) packst. Die kannst Du ja nach Anfangsbuchstaben einbauen. Da kann es aber auch sein, dass Du mehrere Buchstaben in eine Auswahl packen must (das Alphabet hat 26 Buchstaben, ohne die Umlaute), da 26/29 Auswahlfelder eher auch nicht auf jeden Monitor passen.


AW: Commandbar
29.05.2023 11:11:27
Neuer VBA
OK, Danke.

Man kann eben nicht alles haben.

Gruß
Martin


AW: Commandbar
29.05.2023 11:14:47
mumpel
Man muss aber auch nicht "die Faulheit" der Mitarbeiter unterstützen. Vom Scrollen ist noch keiner gestorben. :D


AW: Commandbar
29.05.2023 15:42:14
Neuer VBA
Da gebe ich dir Recht, aber manchmal ist es besser, dem Anwender es so einfach wie möglich zu machen.

Ich habe noch ein wenig ausprobiert und lasse mir jetzt nach jedem 20ten Eintrag eine neue CB erstellen.

Ist mit Sicherheit nicht "Sauber", aber ich komme damit zum Ziel.

Bei Interesse: https://www.herber.de/bbs/user/159369.xlsm

Danke nochmal für deine Hilfe
Gruß
Martin


AW: Commandbar
29.05.2023 17:57:03
mumpel
Was ist denn eigentlich das Ziel? Ein Buchungssystem? Dann wäre ein Kartensystem noch einfacher. Einfach Mitarbeiterausweis ans (eingebundene) Lesegerät halten, und schon wird vollautomatisch gebucht. ;)


AW: Commandbar
29.05.2023 21:35:24
Neuer VBA
Das Ziel ist, ca. 45 -50 MA in rollierenden Dienstplänen ca. 8 Wochen im voraus zu planen, wobei die Rollierung nicht immer 1 zu 1 umgesetzt wird, sondern nach Wünschen der MA auch "getauscht" werden kann, oder wegen Ausfalls umdisponiert werden muss. Da ich in der Exceldatei einen Automatischen Abgleich mit dem "offiziellen" Planungstool mache, ist die korrekte Schreibweise der Namen ein absolutes muss.
Wie so oft, haben die offiziellen Tools nicht immer die Möglichkeit Sonderwünsche umzusetzen.

Buchungssysteme, wie du sie beschrieben hast, sin vorhanden, können aber für eine Planung nicht genutzt werden.

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige