Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1032to1036
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
OptionButtons in Grp mittels Makro erstellen
16.12.2008 14:44:00
adrian
Hi,
wie folgt wird ein OptionButton mittels Makro erstellt: Die Prozedur wird dann zusammen mit einer anderen im HauptSheet aufgerufen.
Nur weiß ich leider nicht wie ich mehrere OB, bzw. drei untereinander als Gruppe erstellen kann =(
Mehrere Prozeduren, für jeweils jeden OB ist ja wohl nicht die feine englische Art. Womit zudem auch die Gruppierung noch nicht gelöst wäre =/
Würde mich echt freuen, wenn hier jemand Rat weiß und mir helfen kann!
lg
adrian

Sub AddOptionButton(Position2 As Range)
Anzahl = 1
For Each Objekt In ActiveSheet.OLEObjects
If Objekt.progID = "Forms.OptionButton.1" Then
Anzahl = Anzahl + 1
End If
Next
With ActiveSheet
Set Objekt = .OLEObjects.Add(ClassType:="Forms.OptionButton.1", Left:=Position2.Left, _
Width:=Position2.Width, Top:=Position2.Top, Height:=Position2.Height)
Set OB = Objekt.Object
With OB
.Name = "FirstChoice" & ActiveSheet.ComboBox1.Value & "OptionButton" & Anzahl
End With
End With
End Sub


12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: OptionButtons in Grp mittels Makro erstellen
16.12.2008 15:08:55
Rudi
Hallo,

Mehrere Prozeduren, für jeweils jeden OB ist ja wohl nicht die feine englische Art.


dafür musst du für die OBs eine eigene Klasse erstellen.


Womit zudem auch die Gruppierung noch nicht gelöst wäre 


Verpaase allen die gleiche GroupName-Eigenschaft.
Gruß
Rudi

AW: OptionButtons in Grp mittels Makro erstellen
16.12.2008 17:22:35
adrian
Hi,
Danke für den Tipp!
Habe bis jetzt noch nie eine Klasse erstellt, aber vll. bekomm ich das ja irgendwie hin!
Ein Bsp. wäre trotzdem hilfreich =)
lg
adrian
AW: OptionButtons in Grp mittels Makro erstellen
17.12.2008 15:19:00
adrian
Hi Rudi,
Danke, hilft mir jedenfalls weiter!
Das Bsp habe ich soweit verstanden =)
Jetzt muss ich das nur noch auf mein Vorhaben anwenden, wobei ich da keine UserForm brauche oder?!
Kann dort alles ins Klassenmodul schreiben und diese Klasse dann im Modul verwenden?!
Ich probier es mal....
lg
adrian
AW: OptionButtons in Grp mittels Makro erstellen
17.12.2008 16:41:00
adrian
Hi,
habe mir den Kopf darüber zerbrochen wie das laufen könnt, aber weiß echt nicht wie ich es angehen soll =(
Das Bsp. von Rudi ist zwar schön, aber trifft irgendwie nicht so ganz auf meine Vorstellung zu bzw. will ich ja was ganz anderes machen! siehe ersten Beitrag.
vll. kann mir da jmd. anderes weiter helfen...=/
lg
adrian
Anzeige
AW: OptionButtons in Grp mittels Makro erstellen
22.12.2008 20:51:00
Tino
Hallo,
Gruppen zu erstellen, musst Du den Options- Button die zu einer Gruppe gehören den gleichen Gruppennamen (GroupName) geben.
OptionButton1, 2 u. 3 bekommen den GroupNamen Gruppe1
OptionButton4, 5 u. 6 bekommen den GroupNamen Gruppe2
Um denen ein bestimmtes Makro zuzuweisen, geht dies am besten über ein Klassenmodul.
Wenn Du möchtest, kann ich Dir ein Beispiel aufbauen, einfach bescheid geben.
Gruß Tino
AW: OptionButtons in Grp mittels Makro erstellen
23.12.2008 00:37:04
adrian
Hi Tino,
das wäre superstark von dir =))
habe mir schon mal ein Buch besorgt, wo was über Klassen, Objektorientiertes Vorgehen etc. drin steht, aber bis ich damit alleine alles ausgetüftelt habe, hätte es schon sehr gedauert!
Wie gesagt, ist ne riesen Hilfe, wenn du mir da ein Beispiel aufbauen kannst!!
So verstehe ich das sicher besser =)
lg
adrian
Anzeige
hier ein Beispiel.
23.12.2008 01:02:00
Tino
Hallo,
habe schon daran gearbeitet bevor du geantwortet hast, nicht dass Du denkst ich wäre so schnell. ;-)
Drückst Du auf den Button "Erstelle Button",
werden in Spalte D, 18 OptionButton in dreier Gruppen erstellt.
Aktivierst Du einen Button Deiner Wahl, wird eine Makro ausgelöst über das Kl. Modul.
https://www.herber.de/bbs/user/57839.xls
Gruß Tino
AW: hier ein Beispiel.
29.12.2008 11:14:00
adrian
Hi Tino,
vielen Dank!!
Werde es gleich mal ausprobieren etc.
Und ein guten Rutsch ins neue wünsch ich dir! =)
lg
adrian
AW: hier ein Beispiel.
29.12.2008 12:22:00
adrian
Hi Tino,
ein paar Sachen sind mir hierbei nicht ganz klar =/
1.
i = IIf(i = 2, 0, i + 1) soll wohl bedeuten: Zähle von Null bis Zwei, wenn i = 2, dann fang wieder bei 0 an....oder?!
Nur Warum IIf(...) und nicht If(...) komischer Ausdruck =)
Dim myArea(0 To 2) As String brauchen wir nicht mehr...
2.
Application.OnTime Now + TimeValue("00:00:01"), "Initialisieren"
Kannst du mir mit Worten vll. erklären warum initialisieren?
Warum funktioniert Application.ScreenUpdating = True nicht ohne das?
in der Funktion "initialisieren" ist mir diese deklaration "Erase Button" noch bisschen unklar.
3.
Ohne die MsgBoxen würde meine Klasse dann so aussehen?
Option Explicit
Public WithEvents objButten As MSForms.OptionButton

Vielen Dank nochmal =))
lg
adrian
Anzeige
AW: hier ein Beispiel.
29.12.2008 12:54:00
Tino
Hallo,
zu 1.
iif hat einen True- Part und einen False- Part
verwende ich um Programmierzeilen zu sparen.
(lese mal in der Hilfe was unter IIf-Funktion steht)
zu 2.
Dies habe ich eingebaut, weil nach dem erstellen der Button die Automatisierung bzw. der Initialisierungscode nicht funktioniert, dazu muss dieses Makro erst beenden werden.
Durch die OnTime, wird dass Makro Initialisieren erst eine Sekunde später ausgeführt, also nachdem dieses Makro beendet ist. (Hat nichts mit ScreenUpdating zu tun)
Erase Button,
damit wird die Matrix (Area) geleert bzw. deinitialisiert,
ist als Sicherheit eingebaut damit nicht die falschen Buttons zugeordnet werden.
Bei ReDim Preserve wird diese wieder neu Dimensioniert
zu 3.
Verstehe nicht was Du meinst,
wollte Dir nur aufzeigen, dass jede Gruppe für sich ein eigenes Makro ausführt.
Die Msgbox war dabei nur ein Beispiel, mir war nichts besseres eingefallen.
Ich hoffe man kann einigermaßen etwas damit anfangen was ich geschrieben habe.
Gruß Tino
Anzeige
AW: hier ein Beispiel.
29.12.2008 15:06:25
adrian
Hi Tino,
Danke für deine schnelle Antwort!
Gleich mal vorweg: Ich konnte sehr viel damit anfangen =)
Habe meinen jetzt Code folgendermaßen geschrieben:

Sub FirstAddOptionButton(Position2 As Range)
Dim GrpCount As Integer, OBCount As Integer
Application.ScreenUpdating = False
For OBCount = 1 To 3
With ActiveSheet
Set Objekt = .OLEObjects.Add(ClassType:="Forms.OptionButton.1", Left:=Position2.Left, _
Width:=Position2.Width, Top:=Position2.Top, Height:=Position2.Height)
Set OB = Objekt.Object
With OB
.Name = "FirstChoice" & ActiveSheet.ComboBox1.Value & "OptionButton" & OBCount
.GroupName = "FirstChoice" & ActiveSheet.ComboBox1.Value
.BackColor = &H80000005
.Font = "Georgia"
.Font.Size = 16
.Font.Bold = True
.Height = 26
If OBCount = 1 Then .Caption = "Yes!": .ForeColor = "&HC000": .Width = 63
If OBCount = 2 Then .Caption = "Possible!": .ForeColor = "&H80FF": .Width = 93
If OBCount = 3 Then .Caption = "No!": .ForeColor = "&HFF": .Width = 49
End With
With .Shapes(Objekt.Name)
.Placement = 1
End With
Set Position2 = Position2.Offset(2, 0)
End With
Next OBCount
Application.ScreenUpdating = True
End Sub


ging auch ohne Klasse =)
Ich hätte gemeint, man kann die Klasse so gestalten, dass gleich in der Klasse die Anordnung der 3 Buttons und ihre Eigenschaften deklariert werden.
Später habe ich auch noch was kompliziertes mit den Gruppen von OptionsButtons vor:
Und wie ich das löse weiß ich leider auch noch nicht, aber das geh ich dann erst im neuen Jahr an und
hoffe du kannst mir weiterhin mit so toller Hilfe beistehen =)
lg & guten Rutsch
adrian

Anzeige

307 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige