Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema Userform
BildScreenshot zu Userform Userform-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Frame
BildScreenshot zu Frame Frame-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema OptionButton
BildScreenshot zu OptionButton OptionButton-Seite mit Beispielarbeitsmappe aufrufen

Optionsfelder im Frame auswerten/ Wahr ausgeben


Betrifft: Optionsfelder im Frame auswerten/ Wahr ausgeben von: Ha-Pe
Geschrieben am: 09.01.2018 21:31:13

Guten Abend Excelfreunde

Habe mal wieder eine Aufgabe, die ich nicht allein lösen kann.

Ich habe eine Userform gebastelt. In dieser sind 24 Frames mit jeweils 3 Optionsfeldern darin sowie weitere Befehlsschaltflächen, Beschriftungsfeldern und Textfeld.

Meine Tabelle soll eine Abfrage des Arbeitsaufwandes/Stresslevels werden.
Die 24 Frames stellen die 24 Stunden des Tages dar. Die jeweils 3 Optionsfelder des Frames sind die Wertung des stundlichen Tagesaufwandes (H=hoch, M=Mittel, L=Leicht).
Bei meiner Suche im Internet bin ich bei https://www.herber.de/xldialoge/uf_opt03.html auf einen Code gestoßen, der meiner Aufgabe mit der Auswertung der Optionsbuttons entspricht und immer in die letzte freie Zeile schreibt.
Um diesen Code für meine Tabelle anzupassen brauche ich Hilfe, da ich mich in VBA nicht auskenne.
zur Erklärung nehme ich diesen Code um die gewünschten Veränderungen zu beschreiben.
1. wie oder was kann/muss verändert werden, dass nicht wahr/falsch angezeigt wird sondern z.Bsp. A,B,C... oder 1,2,3...? Z.Bsp. Frame1 Button L=1, Button M=2 Button H=3, Frame2 Button L=1, Button M=2, Button H=3 usw.
2. wie oder was kann/muss verändert werden, dass nur das "wahr" Ergebnis eines Frame in der/einer Zelle eingetragen wird?
3. wie oder was muss man verändern, um die Ergebnisse der Frames erst ab Spalte "E" ff. eingetragen werden (z. Bsp. Wahrergebnis Frame1 Spalte E, Wahrergebnis Frame2 Spalte F usw.)? oder erübrigt sich das, da ja schon Werte in die Spalten A-D eingetragen werden?

Hoffe das ich es einigermaßen verständlich erklären konnte.

Testtabelle beigefügt
https://www.herber.de/bbs/user/118826.xlsm

Freundlicher Gruß
Ha-Pe

  

Betrifft: AW: VBA - Code von: Phi
Geschrieben am: 10.01.2018 10:26:01

Hallo Herr Müller,

anbei ein VBA-Code, der jeweils "L", "M" oder "H" in die entsprechende Spalte einträgt:

For i = 0 To Me.Controls.Count - 1
    Select Case Left(Me.Controls(i).Name, 5)
        Case Is = "Optio"
            'Debug.Print Me.Controls.Item(i).Name, Me.Controls.Item(i).Value
        Case Is = "Frame"
            Set Fra = Me.Controls(i)
            Debug.Print Me.Controls(i).Name, Fra.Controls(0).Value, Fra.Controls(1).Value, Fra. _
Controls(2).Value
            If Fra.Controls(0).Value Then Cells(loLetzte, 5 + sp) = "L"
            If Fra.Controls(1).Value Then Cells(loLetzte, 5 + sp) = "M"
            If Fra.Controls(2).Value Then Cells(loLetzte, 5 + sp) = "H"
            sp = sp + 1
        Case Else
            'Debug.Print Me.Controls(i).Name
    End Select
Next i
Es ist möglich die Buttons auszulesen, aber dann muss die Systematik der Namen immer durchgehalten werden. Deshalb hier der etwas sicherere Weg mit den Frames.

mfg

(es wa komplizierter als gedacht)


  

Betrifft: AW: VBA - Code von: Ha-Pe
Geschrieben am: 10.01.2018 11:11:50

Hallo Phi

Danke für die Mühe. Werde es ausprobieren und hoffe es an der richtigen Stelle einzubauen.
Ich Berichte nach, ob ichs hinbekommen habe.

Gruß Ha-Pe


  

Betrifft: AW: etwas schlanker von: Phi
Geschrieben am: 10.01.2018 11:27:14

dim Ctl as control

For Each Ctl In Me.Controls
    If TypeName(Ctl) = "Frame" Then
        Set Fra = Ctl
        W = (Fra.Controls(0).Value * 1 + Fra.Controls(1).Value * 2 + Fra.Controls(2).Value * 3)  _
* -1
        Cells(loLetzte, 5 + sp) = Choose(W, "L", "M", "H")
        sp = sp + 1
    End If
Next Ctl



  

Betrifft: AW: etwas schlanker von: Ha-Pe
Geschrieben am: 10.01.2018 13:28:23

Hallo Phi

Dankeschööööön, beide Codes funktionieren.

Wünsche Dir noch eine schöne Zeit, nochmals vielen vielen Dank.

Gruß Ha-Pe


  

Betrifft: AW: Optionsfelder im Frame auswerten/ Wahr ausgeben von: Ha-Pe
Geschrieben am: 10.01.2018 11:05:26

Guten Morgen

Juhu!! Eine Lösung für meine 1. Frage habe ich schon mal gefunden.

Hier habe ich die Funktion/Eigenschaft "OptionButton.Caption" gelesen und probiert, und damit diese Frage schon mal gelöst. Die Optionfelder heißen ja schon L,M und H. Die Lösung kann so einfach sein.

Nun bräuchte ich noch erklärende Hilfe bei den Fragen zu 2. und 3.


Gruß Ha-Pe


  

Betrifft: AW: Frage 2 und 3 von: Phi
Geschrieben am: 10.01.2018 11:31:11

ein Frame kann NICHT wahr oder falsch sein, nur eines der Controls im Frame


  

Betrifft: AW: frame angeklickt von: Phi
Geschrieben am: 10.01.2018 11:34:39


with Frame.controls
if .item(0) + .item(1) + .item(2) = 0 then msgbox "nichts ausgewählt"
end with
ungetestet


  

Betrifft: AW: etwas zum knabbern von: Phi
Geschrieben am: 10.01.2018 13:58:51


For Each Ctl In Me.Controls
    If TypeName(Ctl) = "OptionButton" Then
        If Ctl.Value Then
            N = Val(Replace(Ctl.Name, "OptionButton", "")) - 1
            Cells(loLetzte, 5 + N \ 3) = Ctl.Caption
        End If
    End If
Next Ctl
Die Buttons wurden sehr sorgfältig angelegt, damit geht es auch so.


  

Betrifft: AW: etwas zum knabbern von: Ha-Pe
Geschrieben am: 10.01.2018 15:05:02

Hi Phi

Auch der dritte Code funktioniert super!
Bist ein Super Helfer!
Muss mich nun entscheiden welchen von den Codes ich einsetzte. :-)
ich kann nur weitergeben, dass ich hier in diesem Forum gut aufgehoben bin.
Vielen Dank an Dich und natürlich auch an die weiteren Helfer die dieses Forum so gut machen

mit besten Grüßen

Ha-Pe


Beiträge aus dem Excel-Forum zum Thema "Optionsfelder im Frame auswerten/ Wahr ausgeben"