979 Aufrufe
Gefragt in Tabellenkalkulation von finger59 Experte (1.3k Punkte)
Guten Tag,

zunächst einmal an alle Interessierten ein frohes neues Jahr und vielen Dank für die erhaltene Unterstützung von Euch in den vergangenen Jahren.

Ich habe eine Userform mit vielen OptionButtons erstellt, mit deren Auswahl mir ein bestimmter Wert in die active Zelle geschrieben wird.

Wenn ich den Wert übertragen habe und gehe z.B. eine Zelle darunter und starte dann die gleiche Userform, so ist der letzte ausgewählte Wert immer noch als true gesetzt.

Wähle ich einen anderen Wert aus, so erfolgt auch die entsprechende Eintragung. Will ich jedoch den gleichen Wert übernehmen, so geht es nicht durch eine nochmalige direkte Anwahl mittels draufklicken.

Entweder müsste ich jetzt erst einen Klick in einen anderen Wert vornehmen und dann wieder den korrekten Wert anklicken oder es müsste vorher ein neutralisieren der kompletten Userform mit dem setzten von false auf alle OptionButtons geschehen.

Da mir die erste Lösung nicht gefällt wäre ich für eine Lösung dankbar, die mir alle OptionButtons auf false setzt, bevor die Auswahl getroffen und der Wert übernommen wird.

Mein Versuch es so zu lösen funktioniert leider nicht.

Private Sub OptionButton45_Click()
If OptionButton45.Value = False Then
OptionButton45.Value = True
Else
If OptionButton45.Value = True Then
ActiveCell = 33
End If
End If
End Sub

****************************************************
Da die Userform vorher über einen "neutralen" Button gestartet wird, könnte ich mir dort die Lösung ähnlich wie vorgenannt vorstellten...

Sub testi()
UserForm7.Show
If optionButton45.value = false then
OptionButton45.value = true

If OptionButton44.value = false then
OptionButton44.value = true

If OptionButton43.value = false then
OptionButton43.value = true

usw...

end if
end if
usw..
End Sub

Dieses funktioniert aber leider auch nur bedingt und macht mir die Userform ohne Vorgabe frei (soweit positiv). Allerdings sobald ich eine Auswahl vornehme läuft es mir auf einen Laufzeitfehler 424 und will ein Objekt (?) haben.

In der Hoffnung das jemand einen Lösungsvorschlag hat verbleibe ich mit einem...  have a nice Day...  LG Helmut

2 Antworten

0 Punkte
Beantwortet von m-o Profi (22.7k Punkte)
Hallo Helmut,

probier mal den folgenden Code:
[code]Private Sub UserForm_Initialize()
Dim obj As Object

For Each obj In Me.Controls
     If Left(obj.Name, 12) = "OptionButton" Then obj.Object.Value = False
Next obj

End Sub[/code]
Füge den Code in das VBA-Projekt deiner Userform ein.

Gruß

M.O.
0 Punkte
Beantwortet von finger59 Experte (1.3k Punkte)
Hallo M.O.,
vielen lieben Dank das Du Dich meinem Problem angenommen hast.
So in etwa hatte ich mir die Lösung gewünscht.. Mit einem kurzen Makro alle OptionButtons auf false gesetzt zu bekommen.

Da dieses auch leider so nicht funktionierte hast Du mich dennoch auf eine andere Idee gebracht, die nun auch funktioniert.

In die Userform habe ich einen weiteren OptionButton (Nr. 46) reingestellt und als neutral bezeichnet.

Dann habe ich Dein Makro umgestellt und nachdem ich zuletzt den Vorgang auf Userform_Activate gesetzt hatte funktioniert meine "Krücke" sozusagen, da nun die neutrale Nr. 46 den Klick als Start hat und jede weitere Auswahl zur Übertragung führt.

Von daher sieht mein Makro nun so (falls jemand weiteres auch diese Lösung für sich kreieren möchte):

Private Sub UserForm_activate()
Dim obj As Object
For Each obj In Me.Controls
     If Left(obj.Name, 14) = "OptionButton46" Then obj.Object.Value = True
Next obj
End Sub

Nochmals vielen lieben Dank für Deine Unterstützung und Lösungsbeitragung...  In diesem Sinne... have a nice Day...  LG Helmut
...