Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1160to1164
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
UserForm CommandButtons schleifengesteuert
Andreas
Hallo Herber Fans,
ich bin gerade dabei, mein Wissen um UserForms zu vertiefen und bin auf ein Problem in der schleifengesteuerten Einrichtung von UserForms gestoßen. Die Suche im Forum und auf meiner Herber CD hat bisher keinen Lösungsansatz zu Tage gefördert.
Also: Ich richte auf einer UserForm über eine „For i = 1 to 5“ Schleife 5 CommandButtons ein, die über „Set cmdButton = Me.Controls.Add("Forms.CommandButton.1", "cmdButton", True)“ angewiesen werden. Die Buttons kommen auch alle problemlos. Nun hänge ich aber fest.
1. Wie kann ich es erreichen, daß jeder Button seinen einzigartigen Namen bekommt = „cmdButton & i“, so daß die 5 Buttons nicht jeder „cmdButton“ heißt. Da habe ich schon eine Idee. Das Problem zieht sich aber weiter. Wie kann ich diese Button Gruppe allgemeingültig deklarieren. In diesem Beispiel sind es 5 Buttons. In Realitas werden es um die 50 sein. Es erscheint mir nicht zielführend, 50 mal zu hinterlegen:
Dim cmdButton1 as msForms.CommandButton
Dim cmdButton2 as msForms.CommandButton
Ginge das nicht eleganter? Eine Klassendeklaration…? Ich kenne mich da leider noch nicht so gut aus und möchte es gern lernen.
2. Wenn die 5 Buttons alle separate Namen haben, korrekt deklariert sind, wie kann ich dann auswerten, welcher von den 5 Buttons gedrückt wurde? Auch hier wieder unter Umgehung von x facher Erstellung eines „Private WithEvents cmdButton1 As MSForms.CommandButton“ bzw. „Private Sub cmdButton1_Click()“
Der Code soll immer erkennen, welcher Button gedrückt wurde und testweise dessen Caption über Debug.Print ausgeben.
Zum Hintergrund: Ich will versuchen, mir ein eigenes RGB gesteuertes Farbwahlmenü in Form einer UserForm zu programmieren. Ich habe zwar ColorPicker Ansätze gefunden, aber die kreieren vorher immer noch ein Hilfs- Worksheet. Das will ich über den Weg einer UserForm vermeiden.
https://www.herber.de/bbs/user/69942.xls
Ich würde mich sehr freuen und wäre dankbar, wenn jemand ein paar kluge Ansätze zur Lösung des Problems hat.
Viele Grüße aus Berlin, Andreas Hanisch

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: UserForm CommandButtons schleifengesteuert
07.06.2010 14:48:31
Beverly
Hi Andreas,
erstelle in Klassenmodul mit Namen clsButton und schreibe dort den folgenden Code hinein:
Option Explicit
Public WithEvents Schalter As MSForms.CommandButton
Private Sub Schalter_Click()
MsgBox Schalter.Name & " gedrückt"
End Sub
Ins Codemodul des UserForms schreibnst du diesen Code:
Option Explicit
Dim arrButtons() As New clsButton  ' Array, das sich auf das Klassemodul clsButton bezieht
Private Sub UserForm_Activate()
Dim clSchalter As MSForms.CommandButton
Dim i As Long
For i = 1 To 5
Set clSchalter = Me.Controls.Add("Forms.CommandButton.1", "cmdButton" & i, True)
With clSchalter
.Width = 20
.Height = 20
.Top = i * 23
.Left = 3
.Caption = i
End With
ReDim Preserve arrButtons(0 To i)
Set arrButtons(i).Schalter = clSchalter
Next i
Me.Height = 8 * 23
Me.Caption = "CommandButton Klassenprogrammierung"
End Sub

Der Name des CommandButtons wird beim Drücken in einer MsgBox ausgegeben.


Anzeige
AW: UserForm CommandButtons schleifengesteuert
07.06.2010 15:14:28
Andreas
Hallo Karin,
Perfekt!!! Da hat sich meine vage Hoffnung, daß es in VBA doch auch elegant gehen muß, dank Deiner Hilfe fulminant bestätigt. Dein Vorschlag funktioniert - habs gerade getestet. Werde ihn nun noch genauer unter die Lupe nehmen, um zu lernen.
Dir vielen, vielen Dank!!!
Grüße, Andreas

305 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige