Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

laufzeitfehler 13

Forumthread: laufzeitfehler 13

laufzeitfehler 13
17.12.2007 09:31:00
manuela
hallo
habe eine userform mit einer combobox, die aus einem tabellenbereich zwei werte einliest (spezifisches gewicht und preis). auf dem excel-2003-rechner funktioniert alles einwandfrei. auf einem excel-2007-rechner werden die daten mit komma statt punkt eingelesen (2,02 anstelle 2.02) und bei den weiteren berechnungen erhalte ich dann laufzeitfehler 13. bei beiden rechnern ist in den sprachdefinitionen schweiz angegeben mit dem punkt als dezimalzeichen. irgendwas muss ich auf dem 2007-rechner aber noch umstellen. habe nichts gefunden. danke für die hilfe
manuela
was auch noch seltsam ist: ich habe die textbox, an die der eingelesene wert weitergegeben wird, mit TextBox16 = Format(TextBox16, "##0.00") formatiert. anstelle von 2.02 wird mir mit dieser formatierung aber ein wert von 39115.00 ausgegeben. alle geraden preise (3.00 usw.) funktionieren einwandfrei und werden korrekt ausgegeben. danke

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: laufzeitfehler 13, Schweiz gefragt
17.12.2007 10:07:32
Hajo_Zi
Hallo Manuela,
wäre da vielleicht die Datei nicht schlecht gewesen?

AW: laufzeitfehler 13, Schweiz gefragt
17.12.2007 10:15:00
manuela
ja klar, habe die datei hochgeladen. war ursprünglich eine excel2003-version. nachdem die fehler aufgetaucht sind, habe ich sie als excel2007 neu gespeichert. hat aber nichts gebracht.
besten dank für die hilfe
manuela
https://www.herber.de/bbs/user/48496.xlsm

Anzeige
AW: laufzeitfehler 13, Schweiz gefragt
17.12.2007 10:26:33
Hajo_Zi
Hallo Manuela,
ich hatte Deinen Beitrag auf offen gestellt, da noch offen. Durch Deine Antwort ist er jetzt beantwortet.
In Deutschland schreiben wir bei Format 0.00 da bei Euch die Trennzeichen umgekehrt sind müsste da nicht 0,00 stehen?
Eine Anleitung wie man den Fehler simulieren kann wäre bestimmt nicht schlecht. Es hat vielleicht nicht jeder Zeit sich Stundenlang in den Code einzuarbeiten?
Gruß Hajo

Anzeige
AW: laufzeitfehler 13, Schweiz gefragt
17.12.2007 10:53:08
manuela
hallo hajo
äxgüsi (wie's in der schweiz so heisst). unser korrektes format ist 1'000.00 mit hochkomma und punkt. ich starte die userform aus dem vb-editor, lasse die ersten 4 felder leer, gebe bei anzahl eine 1 ein und wähle bei material verzinkt. beim verlassen des feldes sollte bei gewicht spezifisch eine 8 drin sein und bei preis 2.02. dort zeigt er mir aber fröhlich 39115.00 an (was natürlich grundfalsch ist). durchmesser lasse ich leer. länge = 800, breite 250, dicke 1 und verschnitt 10. dann wird soweit alles richtig gerechnet (einfach mit dem viel zu hohen wert). wenn ich nun aber die im code die formatierung der textbox15 weg lasse, dann wird der preis korrekt angezeigt (allerdings mit komma) und dafür erhalte ich bei der zeile PreisStk = GewStkmV * PreisMat den laufzeitfehler. sobald ich den preis von hand von 2,02 auf 2.02 abändere, dann läuft es. wenn ich das identische spielchen mit kupfer mache, dann bringt er bei der zeile GewStkoV = ((Laenge / 1000) * (Breite / 1000)) * Dicke * GewSpez die laufzeitfehlermeldung 13. ich hoffe, das hört sich jetzt nicht zu wirr an.
herzlichen dank für die hilfe.
manuela

Anzeige
AW: laufzeitfehler 13, Schweiz gefragt
17.12.2007 11:07:05
Hajo_Zi
Hallo Manuela,
ich habe mich jetzt genau an Deine Anleitung gehalten und bei Preis steht 2,02.
Hast Du meinen Vorschlag zu Format getestet. Ich habe keine schweizer Version.
Gruß Hajo

AW: laufzeitfehler 13, Schweiz gefragt
17.12.2007 12:41:42
fcs
Hallo Manuela,
alle Rechenoperationen unter VBA erfordern, dass die Zahlen im US-Format (Dezimalstelle mit Punkt, Tausenderstelle mit Komma) vorliegen.
Auch die Darstellung der Zahlen im lokalen Format in den Textboxen per VBA erfordert die Angabe des Formatstrings in US-Schreibweise. das lokale Format wird in der Systemsteuerung eingestellt. Es gibt aber auch unter Excel-Extras-Option-International die Möglichkeit ein vom Betriebssystem abweichendes Format einzustellen.
Textbox01=Format(CDbl(Textbox01.Text), "#,##0.00")
für Dezimalformat mit Tausenderstelle und 2 Nachkommastellen.
Bei der Verwendung des Textboxinhalts in Berechnungen oder zum Zurückschreiben in Tabellen muss der Textboxinhalt wieder in eine Zahl verwandelt werden, um Überraschungen zu vermeiden.
SpezGewicht = CDbl(Textbox01.Text)
oder
Cells(1,1).Value=CDbl(Textbox01.Text)
Gruß
Franz

Anzeige
AW: laufzeitfehler 13, Schweiz gefragt
17.12.2007 17:10:45
Hofmann
hallo zusammen
wenn ich in den regioneneinstellungen die schweizer einstellungen von punkt auf komma abändere, dann funktioniert es problemlos. aber das kann nicht die lösung sein. alle anderen excel-lösungen hier funktionieren halt mit punkt. unter excel2003 funktioniert ja auch alles bestens. wenn ich die daten eingelesen habe und mit msgbox den wert von preismat oder combobox15.value auslese, erhalte ich an beiden orten 2.02 (mit punkt). aber wenn ich dann den eingelesenen wert in die textbox17 spediere (und das sollte so sein, damit man den preis noch überschreiben kann) gehts los. falls ich die textbox mit cdbl formatiere, kriege ich gleich zu beginn eine laufzeitfehlermeldung 13. und wenn ich nichts formatiere, dann erhalte ich den wert mit komma und die laufzeitfehlermeldung taucht einfach ein bisschen später auf.
danke für euere hilfe.
manuela

Sub ComboBox15_Exit(ByVal Cancel As MSForms.ReturnBoolean)
ComboBox15.BoundColumn = 3
GewSpez = ComboBox15.Value
ComboBox15.BoundColumn = 2
PreisMat = ComboBox15.Value
MsgBox ComboBox15.Value    WERT 2.02
MsgBox PreisMat WERT 2.02
TextBox16 = GewSpez
TextBox17 = PreisMat
TextBox17 = Format(CDbl(TextBox17.Text), "#,##0.00")
MsgBox TextBox17 WERT 2,02
End Sub


Anzeige
AW: laufzeitfehler 13, Schweiz gefragt
18.12.2007 08:37:00
fcs
Hallo Manuela,
die Verarbeitung des Schweizer Zahlenformats in Userforms scheint noch ein wenig trickiger zu sein als die des Deutschen.
Ich hab noch einmal ein wenig experimentiert inklusive Umstellung der Ländereinstellung auf Deutsch(Schweiz) in der Systemeinstellung. Alles unter Win98/Excel97.
Die nachfolgende Variante scheint zu funktionieren, wobei ich die Variablen, die die Werte aus der Combobox übernehmen, explizit als Double deklariert hab. Das schafft klare Verhältnisse bei den Daten. Die Deklaration kannst du entweder als Private zu Beginn des Userform-Codes machen oder per Dim zu Beginn der Sub. Falls du mit den Variablen noch in anderen Subs des Userforms rechnen willst, dann muss du sie als Private deklarieren.
Hier meine kleine Testdatei: https://www.herber.de/bbs/user/48513.xls
In der Datei ist die Änderung der Textbox17 noch nicht integeriert. Den Code findest du unten.
Gruß
Franz

Private GewSpez As Double, PreisMat As Double
Sub ComboBox15_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If Me.ComboBox15.ListIndex = -1 Then Exit Sub
ComboBox15.BoundColumn = 3
GewSpez = CDbl(ComboBox15.Value)
ComboBox15.BoundColumn = 2
PreisMat = CDbl(ComboBox15.Value)
MsgBox "Combobox15.Value PreisMat: " & ComboBox15.Value
MsgBox "CDbl(Combobox15.Value) PreisMat: " & PreisMat
TextBox16 = Format(GewSpez, "#,##0.0##")
TextBox17 = Format(PreisMat, "#,##0.00")
MsgBox "Textbox17: PreisMat-formatiert: " & TextBox17
End Sub
Code für Textbox17-Änderung:
Private Sub TextBox17_Exit(ByVal Cancel As MSForms.ReturnBoolean)
PreisMat = CDbl(TextBox17.Value)
TextBox17 = Format(PreisMat, "#,##0.00")
End Sub
oder
Private Sub TextBox17_Exit(ByVal Cancel As MSForms.ReturnBoolean)
TextBox17 = Format(CDbl(TextBox17.Value), "#,##0.00")
End Sub


Anzeige
AW: DANKE
19.12.2007 09:32:50
manuela
guten morgen
ganz, ganz herzlichen dank. funktioniert perfekt.
frohe festtage
manuela
;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige