Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1576to1580
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
OptionButton per Makro ...erstellen
09.09.2017 12:36:57
kurt
Hallo,
gibt es ein Makro mit dem man 2 OptionButton nebeneinander und 20 nach unten
erstellen kann ?
Links 1 Rechts 2
Links 3 Rechts 4
Die Abhängigkeit aber immer 1 mit 2, 3 mit 4 u.s.w.
gruß
kurt pa

19
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: OptionButton per Makro ...erstellen
09.09.2017 14:18:05
Nepumuk
Hallo Kurt,
in einer Tabelle oder auf einem Userform?
Gruß
Nepumuk
AW: OptionButton per Makro ...erstellen
09.09.2017 18:03:22
Kurt
Hallo Nepumuk,
Auf einer Tabelle .
Gruß
Kurt pa
Das ist ja ein super Beispiel
09.09.2017 18:42:57
kurt
Hallo Nepumuk,
danke ein tolles Beispiel.
Ich möchte ohne Beschriftung und wie kann ich die Position verändern.
Zum Beispiel Plazierung von D20 bis D40 und die 2. Reihe daneben.
Würde mich freuen wenn Du mir das Schreiben würdest.
gruß
kurt pa
Anzeige
AW: Das ist ja ein super Beispiel
09.09.2017 18:54:51
Daniel
Hi
hier mal der Code angepasst und etwas übersichtlicher.
die Optionbuttons passe ich genau an die Zellen an, in die sie geschrieben werden (breite, höhe, Position)
zusätzlich gebe ich diese Zelle als Ausgabezelle für den Optionbutton an, denn wahrscheinlich willst du die Eingabe ja irgendwann mal auswerten oder sonst wie weiterverarbeiten und das geht einfacher, wenn der Optionbuttonwert in einer Zelle steht.
Außerdem kannst du dann die eingabe schnell und einfach zurücksetzen, indem du in alle Ausgabezellen den Wert FALSCH schreibst.
Sub Makro1()
Dim z As Long
Dim s As Long
Dim OB As Object
With Range("D20")
For z = 1 To 20
For s = 1 To 2
With .Offset(z - 1, s - 1)
Set OB = ActiveSheet.OLEObjects.Add( _
ClassType:="Forms.OptionButton.1", _
Link:=False, _
DisplayAsIcon:=False, _
Left:=.Left, _
Top:=.Top, _
Width:=.Width, _
Height:=.Height)
OB.Object.GroupName = "Gruppe" & z
OB.LinkedCell = .Address(0, 0)
OB.Object.Caption = ""
.Value = False
End With
Next
Next
End With
End Sub
Gruß Daniel
Anzeige
Daniel dein Beispiel auch i.o. aber
09.09.2017 19:00:26
kurt
Hallo Daniel,
dein Beispiel ist auch super aber ich kann auch diese nicht löschen !
Wenn ich diese woanders plazieren möchte.
Wie kann ich die Breite einstellen und den abstand undtereinander und nebeneinander ?
gruß
kurt pa
AW: Daniel dein Beispiel auch i.o. aber
09.09.2017 19:41:28
Daniel
Hi
meine Optionbuttons sind ActiveX-Steuerelemente.
Wenn du an diesen Nachträglich was ändern oder löschen willst, musst du erst in den Entwurfsmodus wechseln. Der Button dazu ist in der Menüleiste "Entwicklertools" und dort eigentlich nicht zu übersehen.
die Breite der Optionbutton legst du dort fest, wo "Width:=" steht.
momentan mache ich den Optionbutton so breit wie die Zelle in der ich die den Button platziere.
Wenn du dort eine eine andere Breite haben willst, dann schreibe dort einfach die gewünschte Breite rein, für die Höhe das gleiche:
Width:=20, _
height:=15, _
die Postion wird in den Eigenschaften Top:= (y-Achse, Zeilenposition) und Left:= (x-Achse, Spaltenposition)
Position des ersten Optionbuttons wird hier beschrieben:
With Range("D20")
wenn du zwischen den Optionbuttons immer eine Zelle Abstand haben willst, dann hier (für mehr Abstand):
With .Offset((z - 1) * 2, (s - 1) * 2)
wenn der Abstand unabhängig von Zellen sein soll, dann kannst du die Postion (Top, Left) auch direkt berechnen:
Left:=100 + (s - 1) *30, _
Top:=100 + (z - 1) * 20, _ 

allerdings musst du dir dann ggf gedanken machen, wo die Ausgabezellen haben willst.
du kannst auch beides kombinieren und die Optionbuttons zwar an der Zelle orientiert plazieren, aber verschieben:
Left:=.Left + 10, _
Top:=.Topo + 1, _ 
Wenn du keine Ausgabezellen brauchst, dann lösche diese Zeile:
OB.LinkedCell = .Address(0, 0)
Gruß Daniel
Anzeige
Hier mein größen Wunsch
09.09.2017 19:10:50
kurt
Hallo Daniel,
die Größe 0,62 x0,44
Abstand zwischen beiden Reihen 0,7cm
gruß
kurt pa
AW: Das ist ja ein super Beispiel
09.09.2017 18:58:35
Nepumuk
Hallo Kurt,
über die Left- und Top-Eigenschaft kannst du die Position der Buttons in der Tabelle steuern:
Left:=.Cells(lngIndex, 1).Left, Top:=.Cells(lngIndex, 1).Top
Die Beschriftung bekommst du über die Caption-Eigenschaft. Wenn du keinen Text haben willst, dann musst du die Caption-Eigenschaft auf Leer setzen:
objOLEObject.Object.Caption = vbNullString
Gruß
Nepumuk
Nepumuk danke !!!
09.09.2017 19:11:16
kurt
AW: Nepumuk danke !!!
09.09.2017 19:19:51
Hajo_Zi
warum offen?

Ich gebe keinen Dank für eine Rückmeldung, da ich durch solche Beiträge nicht meine Beitragszahl erhöhen muss.
Also ich schreibe keine Beiträge mit dem Betreff "Gerne u. Danke für die Rückmeldung. o.w.T."
Rückmeldung ist ja in der Heutigen Zeit nicht üblich und die wenigen die eine Rückmeldung geben, mögen mir das verzeihen, das kein Danke für eine Rückmeldung kommt.
Anzeige
darum
09.09.2017 19:31:39
 
damit Du durch solche Beiträge Deine Beitragszahl erhöhen kannst!
AW: darum, Info an Daniel um 19:10 uhr
09.09.2017 20:18:10
Kurt
AW: darum, Info an Daniel um 19:10 uhr
09.09.2017 20:32:54
Daniel
Hi
wie du die Positionen unabhängig von den Zellen berechnen kannst, habe ich dir doch gezeigt.
das ist ja einfache Mathematik.
Welche Werte du konkret einsetzen musst, kannst du dir doch selber ausrechen.
mach einfach mal einen Probeausdruck und miss nach, was du bekommst.
dann kannst ja über den Dreisatz leicht ausrechnen, was du einestzen musst, um deine gewünschten Abstände und Breiten zu bekommen (wenn du bspw With:=100 hast und dein Optionbutton ist nur halb so breit wie gewünscht, dann solltest du es dem Doppelten, also 200 probieren)
oder du nutzt die Funktion Application.InchesToPoints:
Width:=Application.InchesToPoints(Breite in mm / Breite eines Inches(Zoll) in mm)
für die anderen Werte dann analog.
Gruß Daniel
Anzeige
Danke Daniel und schönes Wochenende -)
09.09.2017 21:05:07
Kurt
Es klappt leider nicht !
10.09.2017 10:52:32
kurt
Guten Morgen,
ich habe es mehrfach probiert, klappt nicht.
In der Zelle "D10" habe ich die beiden OptionButton positioniert,
so sollte es aussehen.
Würde mich freuen wenn jemand (Daniel,Nepumuk) für mich schaffen würde.
Habe Musterdatei.
https://www.herber.de/bbs/user/116143.xlsm
gruß
kurt pa
AW: Es klappt leider nicht !
10.09.2017 11:36:12
Nepumuk
Hallo Kurt,
teste mal:
Public Sub CreateOptionButtons()
    Dim objOLEObject As OLEObject
    Dim lngIndex As Long
    Application.ScreenUpdating = False
    With ActiveSheet
        For lngIndex = 1 To 20
            Set objOLEObject = .OLEObjects.Add(ClassType:="Forms.OptionButton.1", Link:=False, _
                DisplayAsIcon:=False, Left:=.Cells(lngIndex + 9, 4).Left + 20, _
                Top:=.Cells(lngIndex + 9, 4).Top + 4, Width:=9, Height:=9)
            
            objOLEObject.Object.Caption = vbNullString
            objOLEObject.Object.GroupName = CStr(lngIndex)
            
            Set objOLEObject = .OLEObjects.Add(ClassType:="Forms.OptionButton.1", Link:=False, _
                DisplayAsIcon:=False, Left:=.Cells(lngIndex + 9, 5).Left + 20, _
                Top:=.Cells(lngIndex + 9, 5).Top + 4, Width:=9, Height:=9)
            
            objOLEObject.Object.Caption = vbNullString
            objOLEObject.Object.GroupName = CStr(lngIndex)
        Next
    End With
    Set objOLEObject = Nothing
    Application.ScreenUpdating = True
End Sub

Gruß
Nepumuk
Anzeige
Leider ...
10.09.2017 14:26:41
kurt
Hallo Nepumuk,
die größe ist i.o., aber der Abstand zwischen beiden zu weit auseinander.
Die Reihe fängt bei 20 an, hier bei Zelle 10.
Die Spaltenbreite ist 9 also ein Button ganz links und das Rechte nach
rechts.
gruß
kurt pa
Habe es hinbekommen --))
10.09.2017 14:59:15
kurt
Hallo Nepumuk,
habe es hinbekommen:
Public Sub Neu_CreateOptionButtons()
Dim objOLEObject As OLEObject
Dim lngIndex As Long
Application.ScreenUpdating = False
With ActiveSheet
For lngIndex = 1 To 20
Set objOLEObject = .OLEObjects.Add(ClassType:="Forms.OptionButton.1", Link:=False,  _
_
DisplayAsIcon:=False, Left:=.Cells(lngIndex + 9, 4).Left + 5, _
Top:=.Cells(lngIndex + 19, 4).Top + 4, Width:=9, Height:=9)
objOLEObject.Object.Caption = vbNullString
objOLEObject.Object.GroupName = CStr(lngIndex)
Set objOLEObject = .OLEObjects.Add(ClassType:="Forms.OptionButton.1", Link:=False,  _
_
DisplayAsIcon:=False, Left:=.Cells(lngIndex + 9, 4).Left + 40, _
Top:=.Cells(lngIndex + 19, 4).Top + 4, Width:=9, Height:=9)
objOLEObject.Object.Caption = vbNullString
objOLEObject.Object.GroupName = CStr(lngIndex)
Next
End With
Set objOLEObject = Nothing
Application.ScreenUpdating = True
End Sub
einwandfrei !
Danke nochmals und Rest schönen Sonntag,
gruß
kurt pa
Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige