Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1328to1332
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

Klasse f.Buttons ?

Klasse f.Buttons ?
26.08.2013 20:25:56
robert
Guten Abend,
in beigefügter Datei erstelle ich ein UF mit Buttons lt.Eintrag
in Spalte A
Ich hab schon etliches probiert, aber anscheinend verstehe ich
die Klassenprogrammierung nicht ;-(
Ich möchte bei Klick der jeweiligen Buttons eine Userform aufrufen.
1.Button = Userform2
2.Button = Userform3
usw...
https://www.herber.de/bbs/user/87037.xlsm
Bitte um Hilfestellung.
Gruß
robert

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

Betreff
Datum
Anwender
Anzeige
AW: Klasse f.Buttons ?
27.08.2013 15:08:35
Beverly
Hi Robert,
du erstellst zwar die CommandButton zur Laufzeit, weist sie aber 1. keiner Klasse zu und 2. gibt es keinen Code, den die CommandButton ausführen sollen.
Du musst also zuerst einmal ein Klassenmodul einfügen (z.B. mit Namen clsButton) - dort muss festgelegt werden, um was für Steuelemente es sich handelt, sodass Excel weiß, welche Aktionen zur Verfügung stehen müssen. Außerdem muss dort natürlich der Code stehen, den die Button ausführen sollen - also der Ereigniscode selbst. In deinem Fall der Code der festlegt, welches UserForm gestartet werden soll:
Option Explicit
' Klasse soll Ereignisse eines Objekts vom Typ CommandButton bereitstellen
Public WithEvents clButton As MSForms.CommandButton
Private Sub clButton_Click()
' UserForm entsprechend Tag-Inhalt + 1 des CommandButton wird gestartet
UserForms.Add(Application.VBE.ActiveVBProject.VBComponents("UserForm" & clButton.Tag + 1). _
Name).Show
End Sub
Im Inizialize-Ereignis des UserForms musst du die Klasse - also den Container für die Steuerelemente - erstellen und musst die während der Laufzeit erstellten CommandButton der Klasse zuweisen (siehe Kommentare an entsprechender Stelle):
Option Explicit
' Klasse (Conatiner für die CommandButton) mit Namen clsButton definieren
Dim arrButtons() As New clsButton
Private Sub UserForm_Initialize()
Dim i As Integer, cmb As MSForms.CommandButton
Dim h As Long, w As Long, a As Long, m As Long
a = Cells(Rows.Count, 1).End(xlUp).Row 'Anzahl Buttons
w = 100 'Breite
h = 40 'Höhe
m = 1 'in einer Reihe
' Größe der Klasse festlegen, d.h. wie viele CommandButton aufgenommen werden sollen
ReDim arrButtons(0 To a - 1)
For i = 1 To a
Set cmb = Me.Controls.Add("Forms.CommandButton.1", "cmd" & 1, True)
cmb.Width = w
cmb.Height = h
cmb.Left = ((i) Mod m) * 50
cmb.Top = (((i - 1) - ((i - 1) Mod m)) / m) * h
cmb.Caption = Cells(i, 1)
cmb.Tag = i
' erstellten Button der Klasse zuweisen
Set arrButtons(i - 1).clButton = cmb
Next i
UserForm1.cmbOK.Top = (a / m) * h + h '+ h
UserForm1.cmbOK.Width = w 'm * h + h
UserForm1.Width = w + 2 ' m * w + w + 10
UserForm1.Height = UserForm1.cmbOK.Top + h + 10
End Sub


Anzeige
Deshalb meine Frage-Karin....
27.08.2013 15:15:13
robert
Hi Karin,
bin gerade vom Einkauf gekommen, werde Deinen Code jetzt testen :-)
Dein Einwand wg.keine Klasse- ja, weil ich zwar viel gelesen und probiert
habe, aber mit diesen Zuweisungen usw. bin ich nicht zurechtgekommenm .
Manche Sachen versteh ich einfach nicht :-(
Melde mich nach dem Test
Gruß
robert

Danke Karin, funkt super ! owT Gruß
27.08.2013 15:41:59
robert

Nachfrage-mehrere Userformen...
28.08.2013 11:52:52
robert
Hallo,
ich erstelle lt.Spalte A-Einträgen
mehrere Userformen.
Wie kann man alle UF-Captions lt. Eintrag ändern ?
In einem Durchlauf ......
Gruß
robert

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige