Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1288to1292
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 13

Laufzeitfehler 13
30.11.2012 12:08:56
Dennis
Morgen zusammen,
schreibe zur Zeit ein Programm mit VBA (Excel) im Rahmen einer Projektarbeit. Zur Zeit will ich das Programm "Idioten sicher",heißt ich will einen Code schreiben so dass alle Felder immer einen Wert größer 0 haben sollen. Es klappt auch bei bei fast allen Feldern außer bei einem, obwohl ich das wie bei den anderen Feldern gemacht habe.
Das Problem liegt nun darin die MessageBox nur kommt wenn ich eine Null reinschreibe und nicht wenn ich die Zeile leer lasse.Wenn die Zeile leer ist bekomme ich nur die Fehlermeldung Laufzeitfelhler 13 : Typen unverträglich
Meine Kenntnisse im programmieren sind ehr gering.
Die betroffen Zeilen sind fett.
Private Sub E_B_be_Click()
Dim E_U, E_Kapa, E_ET, E_ADS, E_stapler, E_ladeg, E_batterie, E_NG, E_SK, E_Kat, E_EG, E_h As Double

E_h = E_MM.E_T_h

'Einsatzgewicht
E_EG = E_MM.E_C_EG
'Energiekosten
E_U = E_MM.E_C_U
E_Kapa = E_MM.E_T_kapa
E_ET = E_MM.E_T_ET
E_ADS = E_MM.E_C_ADS
E_SK = E_MM.E_T_SK
'Feste Kosten
E_stapler = E_MM.E_T_stapler
E_ladeg = E_MM.E_T_ladeg
E_batterie = E_MM.E_T_batterie
'Instandhaltung
E_NG = E_MM.E_T_NG
If MultiPage1.Value = 0 Then
E_Kat = 0.1
ElseIf MultiPage1.Value = 1 Then
E_Kat = 0.13
ElseIf MultiPage1.Value = 2 Then
E_Kat = 0.18
End If
'Sicher
If E_MM.E_T_h = 0 Or E_MM.E_T_h = "" Then
sicher = MsgBox("Bitte 'Arbeitsstunden' eintragen.", vbOKOnly)

ElseIf E_MM.E_C_EG = 0 Or E_MM.E_C_EG = "" Then
sicher1 = MsgBox("Bitte 'Einsatzgewicht' auswählen.", vbOKOnly)
ElseIf E_MM.E_C_U = 0 Or E_MM.E_C_U = "" Then
sicher2 = MsgBox("Bitte 'Spannung' auswählen.", vbOKOnly)
ElseIf E_MM.E_T_kapa = 0 Or E_MM.E_T_kapa = "" Then
sicher3 = MsgBox("Bitte 'Batteriekapazität' eintragen.", vbOKOnly)
ElseIf E_MM.E_T_ET = 0 Or E_MM.E_T_ET = "" Then
sicher4 = MsgBox("Bitte 'Einsatztage' eintragen.", vbOKOnly)
ElseIf E_MM.E_C_ADS = 0 Or E_MM.E_C_ADS = "" Then
sicher5 = MsgBox("Bitte 'Anzahl der Schichten' auswählen.", vbOKOnly)
ElseIf E_MM.E_T_SK = 0 Or E_MM.E_T_SK = "" Then
sicher6 = MsgBox("Bitte 'Stromkosten' eintragen.", vbOKOnly)
ElseIf E_MM.E_T_stapler = 0 Or E_MM.E_T_stapler = "" Then
sicher7 = MsgBox("Bitte 'Investionskosten beim Stapler' eintragen.", vbOKOnly)
ElseIf E_MM.E_T_ladeg = 0 Or E_MM.E_T_ladeg = "" Then
sicher8 = MsgBox("Bitte 'Investionskosten beim Ladegerät' eintragen.", vbOKOnly)
ElseIf E_MM.E_T_batterie = 0 Or E_MM.E_T_batterie = "" Then
sicher9 = MsgBox("Bitte 'Investionskosten bei der Staplerbatterie' eintragen.", vbOKOnly)
ElseIf E_MM.E_T_NG = 0 Or E_MM.E_T_NG = "" Then
sicher10 = MsgBox("Bitte 'Nutzungsgrad' eintragen.", vbOKOnly)
End If
If sicher = 0 And sicher1 = 0 And sicher2 = 0 And sicher3 = 0 And sicher4 = 0 And sicher5 = 0 And sicher6 = 0 And sicher7 = 0 And sicher8 = 0 And sicher9 = 0 And sicher10 = 0 Then
'Ergebnis
AE_MM.AE_T_PA = f_E_be(E_U, E_Kapa, E_ET, E_ADS, E_stapler, E_ladeg, E_batterie, E_NG, E_SK, E_Kat, E_EG, E_h)
AE_MM.AE_T_PH = f_E_be2(AE_MM.AE_T_PA, E_NG, E_ET, E_h)
Unload E_MM
AE_MM.Show
End If
Hoffe mir kann wer helfen.
Gruß

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Laufzeitfehler 13
30.11.2012 12:26:29
Rudi
Hallo,
wer soll denn da durchblicken?
obwohl ich das wie bei den anderen Feldern gemacht habe
hast du nicht!
E_h ist als Double deklariert. Alle anderen als Variant.
Lass As Double weg.
Gruß
Rudi

AW: Laufzeitfehler 13
30.11.2012 13:23:37
Dennis
Vielen Dank funktioniert jetzt. Unser Prof. hatte uns das so gesagt.

Prof
30.11.2012 13:34:52
Rudi
Hallo,
Unser Prof. hatte uns das so gesagt.
schickt ihn zu nem VBA-Kurs ;-)
Der Variablentyp muss in der Dim-Anweisung hinter jeder Variablen angegeben werden.
Dim a as Double, b as Double, c as Double
aber nicht
Dim a, b, c As Double
Da sind a und b Variant und nur c Double.
Deshalb funktioniert der Test von a und b auf "", nicht aber bei c="".
Gruß
Rudi

Anzeige
AW: Prof
01.12.2012 20:43:39
schauan
Hallo,
dass mit dem "Der Variablentyp muss in der Dim-Anweisung hinter jeder Variablen angegeben werden" ist nicht ganz korrekt.
Siehe hier:
http://clever-forum.de/read.php?11,268562,268767#msg-268767
Gerade wenn mann mit so einem Sack voll Variablen unterwegs ist, wäre das zu überlegen ...
Grüsse, André

Richtig, kann mich dunkel erinnern, ...
02.12.2012 17:32:32
Luc:-?
…André,
gibt's wohl auch in anderen Sprachen (sicher meint sein Prof das). Aber hier hätte es wohl bei der Namensvergabe nicht wie gewünscht funktioniert (falls nicht a,b,c doch zum Vordefinitionsbereich von Double gehören). Außerdem gibt's ja noch die Definition über Symbole wie #,&,$, also insgesamt 3 Möglichkeiten.
Gruß Luc :-?

Anzeige
AW: Laufzeitfehler 13
30.11.2012 16:16:17
mumpel
Hallo!
Tipp:
Bitte gewöhn Dir an, für jede Variablendeklaration eine eigene Deklarationszeile zu nutzen. Dann wird es Dir leichter fallen, die richtige Deklaration zu verwenden und Deklarationsfehler lassen sich dann auch leichter finden.
Gruß, René

Machst du das auch so, René? ;-) Gruß+schöWE owT
30.11.2012 17:22:35
Luc:-?
:-?

AW: Machst du das auch so, René? ;-) Gruß+schöWE owT
01.12.2012 11:42:32
mumpel
Ich mach das immer so. Ist übersichtlicher. Zudem sind bei mir (fast) alle Variablen öffentlich (Public) und stehen in einem separaten Modul.

Aha, bei mir nicht bzw nach Bedarf! Gruß owT
02.12.2012 16:57:54
Luc:-?
:-?

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige