Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1424to1428
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Laufzeitfehler bei UserForm

Laufzeitfehler bei UserForm
16.05.2015 09:45:29
Anld
Hallo zusammen,
ich habe ein UserForm geschrieben, welcher 5 verschiedene Prozentwerte einlesen soll.
Aus diesen Werten wird anschließend ein neuer Wert berechnet.
Bei der Überprüfung will ich nun feststellen, ob es sich bei der Eingabe um eine Zahl handelt und das die Zahl nicht 100 ist.
Das mit dem 100 funktioniert auch und es wird die gewünschte Antwort zurückgegeben, leider passiert nichts, wenn ich Buchstaben eingebe, obwohl dann ebenfalls die von mir eingetragene Fehlermeldung auftauchen soll.
Als Fehler erhalte ich immer "Laufzeitfehler 13 Typen unverträglich". Ich habe auch schon .value anstatt .text ausprobiert. Funktioniert allerdings auch nicht =(
Hier der Code:
Private Sub Berechnen_Button_Click()
Dim Anteil_EK As Single
Dim KKS_Ek As Single
Dim Anteil_FK As Single
Dim KKS_FK As Single
Dim Steuervorteil As Single
Dim WACC As Single
'Werte als Variablen speichern
Anteil_EK = Anteil_EigenK.Text
KKS_Ek = Kapitalkostensatz_EK.Text
Anteil_FK = Anteil_FremdK.Text
KKS_FK = Kapitalkostensatz_FK.Text
Steuervorteil = Steuervorteil_FK.Text
If Not IsNumeric(Anteil_EigenK.Text) Or Anteil_EK 100 Then
Anteil_EigenK.Text = ""
MsgBox "Bitte geben Sie für den Eigenkapitalanteil eine positive Zahl ein, die nicht größer als 100 ist."
Exit Sub
End If
If Not IsNumeric(Kapitalkostensatz_EK.Text) Or KKS_Ek 100 Then
Kapitalkostensatz_EK.Text = ""
MsgBox "Bitte geben Sie für den Kapitalkostensatz des EK eine positive Zahl ein, die nicht größer als 100 ist."
Exit Sub
End If
If Not IsNumeric(Anteil_FremdK.Text) Or Anteil_FK 100 Then
Anteil_FremdK.Text = ""
MsgBox "Bitte geben Sie für den Fremdkapitalanteil eine positive Zahl ein, die nicht größer als 100 ist."
Exit Sub
End If
If Not IsNumeric(Kapitalkostensatz_FK.Text) Or KKS_FK 100 Then
Kapitalkostensatz_FK.Text = ""
MsgBox "Bitte geben Sie für den Kapitalkostensatz des FK eine positive Zahl ein, die nicht größer als 100 ist."
Exit Sub
End If
If Not IsNumeric(Steuervorteil_FK.Text) Or Steuervorteil 100 Then
Steuervorteil_FK.Text = ""
MsgBox "Bitte geben Sie für den Steuervorteil eine positive Zahl ein, die nicht größer als 100 ist."
Exit Sub
End If
WACC = Anteil_EK / 100 * KKS_Ek / 100 + Anteil_FK / 100 * KKS_FK / 100 * (1 - Steuervorteil / 100)
MsgBox WACC

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Laufzeitfehler bei UserForm
16.05.2015 10:27:44
Uwe
Hallo,
If Not IsNumeric(Anteil_EigenK.Text) Then
Anteil_EigenK.Text = ""
MsgBox "Bitte geben Sie für den Eigenkapitalanteil eine positive Zahl ein, die nicht größer  _
als 100 ist."
Exit Sub
Else
If Anteil_EK  100 Then
Anteil_EigenK.Text = ""
MsgBox "Bitte geben Sie für den Eigenkapitalanteil eine positive Zahl ein, die nicht größer  _
als 100 ist."
Exit Sub
End If
End If
Gruß Uwe

AW: Laufzeitfehler bei UserForm
16.05.2015 10:28:20
Nepumuk
Hallo,
du übergibst die TextBoxen ungeprüft an die numerischen Variablen. Versuch es mal so:
Private Sub Berechnen_Button_Click()
    Dim Anteil_EK As Single
    Dim KKS_Ek As Single
    Dim Anteil_FK As Single
    Dim KKS_FK As Single
    Dim Steuervorteil As Single
    Dim WACC As Single
    Dim blnMisentry As Boolean
    
    If IsNumeric(Anteil_EigenK.Text) Then
        Anteil_EK = Anteil_EigenK.Text
        If Anteil_EK <= 0 Or Anteil_EK >= 100 Then blnMisentry = True
    Else
        blnMisentry = True
    End If
    If blnMisentry Then
        Anteil_EigenK.Text = ""
        MsgBox "Bitte geben Sie für den Eigenkapitalanteil eine positive Zahl ein, die nicht größer als 100 ist."
        Exit Sub
    End If
    
    If IsNumeric(Kapitalkostensatz_EK.Text) Then
        KKS_Ek = Kapitalkostensatz_EK.Text
        If KKS_Ek <= 0 Or KKS_Ek >= 100 Then blnMisentry = True
    Else
        blnMisentry = True
    End If
    If blnMisentry Then
        Kapitalkostensatz_EK.Text = ""
        MsgBox "Bitte geben Sie für den Kapitalkostensatz des EK eine positive Zahl ein, die nicht größer als 100 ist."
        Exit Sub
    End If
    
    If IsNumeric(Anteil_FremdK.Text) Then
        Anteil_FK = Anteil_FremdK.Text
        If Anteil_FK <= 0 Or Anteil_FK >= 100 Then blnMisentry = True
    Else
        blnMisentry = True
    End If
    If blnMisentry Then
        Anteil_FremdK.Text = ""
        MsgBox "Bitte geben Sie für den Fremdkapitalanteil eine positive Zahl ein, die nicht größer als 100 ist."
        Exit Sub
    End If
    
    If IsNumeric(Kapitalkostensatz_FK.Text) Then
        KKS_FK = Kapitalkostensatz_FK.Text
        If KKS_FK <= 0 Or KKS_FK >= 100 Then blnMisentry = True
    Else
        blnMisentry = True
    End If
    If blnMisentry Then
        Kapitalkostensatz_FK.Text = ""
        MsgBox "Bitte geben Sie für den Kapitalkostensatz des FK eine positive Zahl ein, die nicht größer als 100 ist."
        Exit Sub
    End If
    
    If IsNumeric(Steuervandteil_FK.Text) Then
        Steuervorteil = Steuervorteil_FK.Text
        If Steuervorteil <= 0 Or Steuervorteil >= 100 Then blnMisentry = True
    Else
        blnMisentry = True
    End If
    If blnMisentry Then
        Steuervorteil_FK.Text = ""
        MsgBox "Bitte geben Sie für den Steuervorteil eine positive Zahl ein, die nicht größer als 100 ist."
        Exit Sub
    End If
    
    WACC = Anteil_EK / 100 * KKS_Ek / 100 + Anteil_FK / 100 * KKS_FK / 100 * (1 - Steuervorteil / 100)
    MsgBox WACC
    
End Sub

Gruß
Nepumuk

Anzeige
AW: Laufzeitfehler bei UserForm
16.05.2015 10:33:07
Nepumuk
Hallo,
muss natürlich >100 und nicht >=100 heißen.
Gruß
Nepumuk

AW: Laufzeitfehler bei UserForm
16.05.2015 12:16:24
Anld
Hallo Nepumuk,
es funktioniert, vielen Dank.
Was ich allerdings noch nicht verstehe ist, warum blnMisentry sowohl in bei If als auch bei Else = True gesetzt wird.
Und bedeutet "If blnMisentry then" das gleiche wie "If blnMisentry = False then"?
Gruß
Anld

AW: Laufzeitfehler bei UserForm
16.05.2015 12:33:04
Nepumuk
Hallo,
nein, anders herum. So wird True abgefragt.
Du musst die Abfrage ob es nummerisch ist und ob es innerhalb der Grenzen ist trennen. Darum kann es die Variable an zwei Stellen auf True gesetzt wird.
If - Then wertet immer True/False aus. Da die Variable schon den Wert True/False hat, muss ich sie nicht noch zusätzlich mit dem Wert vergleichen.
Gruß
Nepumuk

Anzeige
AW: Laufzeitfehler bei UserForm
16.05.2015 13:44:14
Anld
Jetzt verstehe ich es.
Besten Dank, das hat mir sehr geholfen =)

AW: Laufzeitfehler bei UserForm
16.05.2015 17:49:23
Anld
Jetzt verstehe ich es.
Besten Dank, das hat mir sehr geholfen =)

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige