Microsoft Excel

Herbers Excel/VBA-Archiv

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

Steuerelemente im Uhrzeigersinn einfügen

Betrifft: Steuerelemente im Uhrzeigersinn einfügen von: Siegfried
Geschrieben am: 01.11.2020 16:18:35

Hallo zusammen,


ich habe den nachfolgenden Code zum Einfügen von Steuerelementen im Uhrzeigersinn in ein Formular.

Der Code funktioniert mit der Einschränkung, dass das erste Element auf 3 Uhr eingefügt wird.

Wie muss ich es anstellen, das das erste Element auf 1 Uhr eingefügt wird?

Danke für jede Hilfe im Voraus und Gruß


Siegfried

Sub Anordnung_Stunde()
    Dim Obj_OptStunde As MSForms.OptionButton   ' Variable für ein neues Steuerelement
    Dim Cnt As Control     ' Variable für ein beliebiges Control
    Dim n1 As Integer
    Dim Startzeit As Integer, CosWinkel As Double, SinWinkel As Double
    Dim Radius As Integer, Winkeldrehung As Double, Winkel As Double
    Dim AnzElemente As Integer, MittelpunktLeft As Integer, MittelpunktTop As Integer
    
    Radius = Frm_Uhr.Height / 2 / 12 * 11 - 3
    Winkeldrehung = 360 / 12
    AnzElemente = 360 / Winkeldrehung
    MittelpunktLeft = Radius
    MittelpunktTop = Radius
    MittelpunktLeft = Frm_Uhr.Width / 2 - 12
    MittelpunktTop = Frm_Uhr.Height / 2 - 12
    
    ' fügt 12 OptionButton-Steuerelemente für die Uhrzeiten ein
    ' das erste Element wird (gesteuert vom System) auf 3 Uhr beginnend eingefügt
       
    For n1 = 1 To AnzElemente
        SinWinkel = Radius * Sin(Winkel / 180 * Application.Pi)
        CosWinkel = Radius * Cos(Winkel / 180 * Application.Pi)
        Set Obj_OptStunde = _
            Frm_Uhr.Controls.Add("Forms.OptionButton.1", "Stunde" & n1, True)
        With Obj_OptStunde
            .Left = MittelpunktLeft + CosWinkel
            .Top = MittelpunktTop + SinWinkel
            .Caption =n1
            .AutoSize = True
        End With
      Next n1
    
    Set Obj_OptStunde = Nothing
End Sub

Betrifft: AW: Steuerelemente im Uhrzeigersinn einfügen
von: Daniel
Geschrieben am: 01.11.2020 16:39:42

Hi

0° scheint wohl bei 3 Uhr zu liegen.
Also musst du zum Startwinkel noch 60° abziehen oder hinzufügen, je nach ausrichtung und umgerechnet in Bogengrad.

Gruß Daniel

Betrifft: AW: Steuerelemente im Uhrzeigersinn einfügen
von: onur
Geschrieben am: 01.11.2020 17:16:02

Mit Mathe und Trigonometrie hast du wohl nicht viel am Hut, oder ???
0 Grad in Trigonmetrie ist die 3 Uhr-Stellung!
Guckst du hier:
https://www.herber.de/bbs/user/141234.xlsm

Betrifft: AW: Steuerelemente im Uhrzeigersinn einfügen
von: Siegfried
Geschrieben am: 01.11.2020 17:45:25

Hi onur,

Vielen Dank, so funktioniert es.

Du hast ja Recht mit Deiner Feststellung hinsichtlich der Trigonometrie, ist bei mir allerdings schon etwas länger her (letzter Schultag auf der Volksschule, so hieß das damals, war vor genau 66 Jahren).

Vielleicht kannst Du mir aber das noch erklären:
n1 = (n + 9) Mod 12

Gruß
Siegfried

Betrifft: AW: Steuerelemente im Uhrzeigersinn einfügen
von: onur
Geschrieben am: 01.11.2020 17:50:53

Damit wird aus 30° bis 360° (1 bis 12 x30) 300° (1-Uhr-Stellung bis 270° (12-Uhr-Stellung).

Betrifft: AW: Steuerelemente im Uhrzeigersinn einfügen
von: onur
Geschrieben am: 01.11.2020 17:57:26

Du kannst aber stattdessen auch das hier machen:
        With Obj_OptStunde
            .Left = MittelpunktLeft + SinWinkel
            .Top = MittelpunktTop - CosWinkel
            .Caption = n
            .AutoSize = True
        End With


Beiträge aus dem Excel-Forum zum Thema "Steuerelemente im Uhrzeigersinn einfügen"