VERSION 5.00
Begin {C62A69F0-16DC-11CE-9E98-00AA00574A4F} UserForm1 
   Caption         =   "Startwinkel"
   ClientHeight    =   1980
   ClientLeft      =   30
   ClientTop       =   360
   ClientWidth     =   1725
   OleObjectBlob   =   "UserForm1.frx":0000
   StartUpPosition =   1  'CenterOwner
End
Attribute VB_Name = "UserForm1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Explicit


'***Startroutine
Private Sub UserForm_Initialize()

    '***Skin festlegen
    Me.Height = 123
    Me.Width = 90.75
    
    Me.CB_StartValu.AutoSize = False
    Me.CB_StartValu.Height = 18
    Me.CB_StartValu.Width = 72
    Me.CB_StartValu.HideSelection = True
    Me.CB_StartValu.Clear
    
    
    '***ComboBox mit Startwerten füllen
    Me.CB_StartValu.AddItem "0"
    Me.CB_StartValu.AddItem "30"
    Me.CB_StartValu.AddItem "45"
    Me.CB_StartValu.AddItem "90"
    Me.CB_StartValu.AddItem "135"
    Me.CB_StartValu.AddItem "180"
    Me.CB_StartValu.AddItem "270"
    Me.CB_StartValu.AddItem "360"
    
    '***Initialwert festlegen
    Me.CB_StartValu.Value = "45"

End Sub

Private Sub BT_Start_Click()

    '***DEKLARATIONEN
    Dim intCheckStringStr As String
    
    
    '***PRÜFFUNKTION AUFRUFEN
    intCheckStringStr = CheckTheInput(CStr(Me.CB_StartValu.Value))

    '***FALLUNTERSCHEIDUNG
    Select Case intCheckStringStr
        '***ASUGABE WENN WERT NICHT NUMERISCH
        Case "NOT NUMERIC"
            Me.CB_StartValu.Value = SetTheMessage("NOT NUMERIC")
            
        '***AUSGABE WNN WERT GRENZWERTE VERLETZT
        Case "OUT OF RANGE"
            Me.CB_StartValu.Value = SetTheMessage("OUT OF RANGE")
            
        '***ABSOLUTBETRAG EINTRAGEN WENN ALLES OK IST
        Case "OK"
           Me.CB_StartValu.Value = Abs(Me.CB_StartValu.Value)
    End Select
    
End Sub

'***FUNKTION ZUM PRÜFEN DER EINGABE
Private Function CheckTheInput(ByVal uebValueStr As String) As String

    '***DEKLARATIONEN
    Dim intIsNumericBool As Boolean
    Dim intValueDbl As Double

    '***PRÜFUNG AUF NUMERISCHEN WERT
    On Error Resume Next
    If IsNumeric(Me.CB_StartValu.Value) = True Then
        intIsNumericBool = True
    Else
        CheckTheInput = "NOT NUMERIC"
        Exit Function
    End If
    On Error GoTo 0
    
    '***GRENZWERTPRÜFUNG
    On Error Resume Next
    intValueDbl = CDbl(uebValueStr)
    If Abs(intValueDbl) > 360 Then
        CheckTheInput = "OUT OF RANGE"
        Exit Function
    End If
    On Error GoTo 0
    
    '***ERGEBNISS ZURÜCK GEBEN WENN WERT NUMERISCH UND INNERHALB DER GRENZWERTE
    CheckTheInput = "OK"
    Exit Function
    
End Function

'***FUNKTION DIE DIE AUSGABE- UND EINGABEBOX AUSGIBT
Private Function SetTheMessage(ByVal uebMsgTypeStr As String) As String

    '***DEKLARATIONEN
    Dim intMsgBoxResObj As VbMsgBoxResult
    Dim intMsgBoxStyleObj As VbMsgBoxStyle
    
    '***ALLGEMEINEN MSGBOX STYLE FESTLEGEN
    intMsgBoxStyleObj = vbCritical + vbOKOnly
    
    '***FALLABFRAGE UND AUSGABE DER MSGBOXEN
    Select Case uebMsgTypeStr
        '***AUSGABEN BEI NICHT NUMERISCHEN WERTEN
        Case "NOT NUMERIC"
            MsgBox "Der eingegebene Werte ist nicht numerisch!" + vbNewLine + _
                    "Bitte geben Sie nur numerische Werte zischen -360° und 360° ein" + vbNewLine + _
                    "Der eingegebene Wert wird gelöscht", intMsgBoxStyleObj, "KEIN NUMERISCHER WERT"
            SetTheMessage = ""
            Exit Function
            
        '***AUSGABE BEI WERTEN GRÖSSER ALS 360°
        Case "OUT OF RANGE"
            MsgBox "Der eingegebene Werte überschreitet die Grenzwerte" + vbNewLine + _
                    "Bitte geben Sie nur numerische Werte zischen -360° und 360° ein" + vbNewLine + _
                    "Der eingegebene Wert wird gelöscht", intMsgBoxStyleObj, "GRENZWERTVERLETZUNG"
            SetTheMessage = ""
            Exit Function
    End Select

End Function

'***Routine zum Beenden des Makros
Private Sub BT_End_Click()
    End
End Sub
