Code vereinfachen

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
Bild

Betrifft: Code vereinfachen
von: Fabi
Geschrieben am: 12.11.2015 18:50:49

Hallo,
Vielleicht kann mir ja jemand helfen.
Das Ganze ist nur ein Ausschnitt aus meiner Original Datei
Ich habe eine UserForm mit 3 Optionbutton.
Wenn ich ein Button auswähle, dann schreibt er den Namen (oder Text) in die Zelle wo ich gerade bin – wenn ich noch einmal auswähle dann schreibt er den nächste Namen in die Zelle.
Das funktioniert alles soweit ganz gut, wie ich es mir gedacht habe.
Meine Frage an die Excel-Profis:
Kann man den Code den ich dafür verwende auch kleiner schreiben – also irgendwie vereinfachen ???
mir erscheint das ganze als zu umständlich so wie ich dies geschrieben habe.
Datei:
https://www.herber.de/bbs/user/101475.xlsm
Danke an alle
Fabi

Bild

Betrifft: AW: Code vereinfachen
von: Daniel
Geschrieben am: 12.11.2015 19:02:46
Hi
ist die Reihenfolge wichtig oder reicht es, wenn der nächste Text angehängt wird?
Gruß Daniel

Bild

Betrifft: AW: Code vereinfachen
von: Fabi
Geschrieben am: 12.11.2015 19:10:50
Hey Daniel,
die Reihenfolge muss so eingehalten werden.
grüße Fabi

Bild

Betrifft: AW: Code vereinfachen
von: Daniel
Geschrieben am: 12.11.2015 19:24:49
Hi
1. entferne die Optionbuttons und ersetze sie durch eine Single-Select-Listbox.
2. befüllte die Listbox mit den Texten im Activate-Event:

Private Sub UserForm_Activate()
    With ListBox1
        .AddItem "1A"
        .AddItem "2A"
        .AddItem "3A"
    End With
3. verwende diesen Code für den Button:
Private Sub CommandButton1_Click()
Dim i As Long
Dim strZelle As String
Dim strErg As String
If ListBox1.ListIndex > -1 Then
 
    strZelle = ActiveCell.Value
    
    For i = 0 To ListBox1.ListCount - 1
        If ListBox1.ListIndex = i Or InStr(strZelle, ListBox1.List(i)) <> 0 Then
            strErg = strErg & vbLf & ListBox1.List(i)
        End If
    Next
    
    If strErg <> "" Then ActiveCell.Value = Mid(strErg, 2)
End If
Unload Me
End Sub
Gruß Daniel

Bild

Betrifft: AW: Code vereinfachen
von: Fabi
Geschrieben am: 12.11.2015 19:53:39
Hey Daniel,
danke dir -
so ist es wirklich einfacher bzw. leichter
grüße
Fabi

Bild

Betrifft: AW: Code vereinfachen
von: Fabi
Geschrieben am: 12.11.2015 20:28:36
Hey
Gibt es auch eine Möglichkeit mit OptionButtons ??
Grüße fabi

Bild

Betrifft: AW: Code vereinfachen
von: Daniel
Geschrieben am: 12.11.2015 21:59:11
H
Ja geht auch, aber warum?
Es sollte dich einfach werden.
Ansonsten
Statt dieser schleife:

 For i = 0 To ListBox1.ListCount - 1
          If ListBox1.ListIndex = i Or InStr(strZelle, ListBox1.List(i)) <> 0 Then
              strErg = strErg & vbLf & ListBox1.List(i)
          End If
      Next
Für jeden Optionbutton folgendes
If Optionbutton1 = Or InStr(strZelle, OptionButton1.Caption) <> 0 Then
              strErg = strErg & vbLf & Optionbutton1.Caption
Gruss Daniel

Bild

Betrifft: AW: Code vereinfachen
von: Fabi
Geschrieben am: 13.11.2015 17:27:16
Hey Daniel,
Danke dir -- so gefällt es mir besser
Danke
Fabi

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Code vereinfachen"