Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

Hallo

folgendes problem habe ich:

Private Sub Cmd_Liczyc_Click()

Dim osob As String, metraz As String, vczynsz As String

metraz = CStr(Me.Txt_Metraz)

osob = CStr(Me.Txt_Osob)

vczynsz = czynsz((osob), (metraz))

If vczynsz = "" Then

Me.Txt_Czynsz = 0

Else

Me.Txt_Czynsz = vczynsz

End If

End Sub

ich habe einen button löschen und da setze ich alle TextFelder auf leren String so :

Me.Txt_Osob = ""

wenn ich jetz die Funktion Löschen abrufe und dann will ich die Funktin Private Sub Cmd_Liczyc_Click() abrufen ( sie sollte rechnen ) kriege ich ein laufzeit fehler glaube ich 113

Die Funktion czynsz seht so aus:

Public Function czynsz(osoby As Double, metraz As Double)

Dim vczynsz As Double

vczynsz = osoby / metraz

' Rückgabe der Funkton

czynsz = vczynsz

End Function

Ich denke da ich ein problem habe mit Datentyp umwandlung, habe alle aber versucht leider ohne Erfolg ;-((

Bitte Hilllllllllfe

  • Autor
Original geschrieben von Klotzkopp

Könnte es vielleicht Laufzeitfehler 11 sein, Division durch Null?

ne auserdem mache ich keine Division durch Null sondern leren String " " und ich vermute ganz stark die Datentyp umwandlung als problem wie schreib mann eigentlich Exception im vb ?

Original geschrieben von 007ski

ne auserdem mache ich keine Division durch Null sondern leren String " "

In der Funktion czynsz dividierst Du durch metraz, und metraz ist laut Funktionsdeklaration ein Double. Wenn metraz an dieser Stelle Null ist (was bei der Initialisierung durch einen leeren String sehr wahrscheinlich ist), bekommst Du einen Laufzeitfehler.
Original geschrieben von 007ski

leider funktioniert nicht das was Du mir gesagt hast :(

Kann mir doch jemand helfen :confused:

Ich habe nichts gesagt, was "funktionieren" könnte, ich habe nur gesagt, wo ich den Fehler vermute. Ändere doch mal csyncsz folgendermaßen:

Public Function czynsz(osoby As Double, metraz As Double)

Dim vczynsz As Double

If metraz = 0 then

' Laufzeitfehler vermeiden

czynsz = 0

Else

vczynsz = osoby / metraz

' Rückgabe der Funkton

czynsz = vczynsz

End If

End Function

  • Autor

nein es geht nicht um gesagt nicht gesagt, ich bin wirklich froh dass du mir helfen willst aber diesen progi geht einfach nicht

Übriegens es ist Laufzeitfehler 13, und erlich gesagt ich sehe kein unterschit ob ich, dass in der Funktion czynsz befrage oder in der Funktion Liczyc_Click()

Original geschrieben von 007ski

Übriegens es ist Laufzeitfehler 13

Ah, jetzt sehen wir klarer. Laufzeitfehler 13 ist Type Mismatch, d.h. die Laufzeitumgebung kann eine erforderliche Typumwandlung nicht durchführen. Als erstes fällt mir da auf:


vczynsz = czynsz((osob), (metraz))
If vczynsz = "" Then
[/CODE]

czynsz liefert einen Double, kann sein, dass Du den nicht mit einem String vergleichen kannst. Vielleicht könnte jemand, der VB zur Verfügung hat, das mal überprüfen.

Original geschrieben von 007ski

Hallo

folgendes problem habe ich:

Private Sub Cmd_Liczyc_Click()

Dim osob As String, metraz As String, vczynsz As String

metraz = CStr(Me.Txt_Metraz)

osob = CStr(Me.Txt_Osob)

vczynsz = czynsz((osob), (metraz))

If vczynsz = "" Then

Me.Txt_Czynsz = 0

Else

Me.Txt_Czynsz = vczynsz

End If

End Sub

Hallo,

ich habe deinen Quellcode so verstanden dass du mit dem Wert von zwei Textfelder innerhalb einer Funktion rechnen möchtest.

Das bringt mich auf zwei Fragen :

a) Du liest den Inhalt der Textfelder in Stringvariablen, du wandelst sie mit cstr sogar noch um. Aber warum wenn du doch nur rechnen willst ? Deklariere die Variablen doch auch als Double.

Texteingaben in dass Textfeld fängst du dann einfach mit if isnumeric(me.txt_XZY) = true then .....usw ab.

B) Du hast den Rückgabewert der Function nicht mit angegeben, hat dass einen speziellen Grund ? Ich meine, willst du innerhalb der Funktion eventuell mit Objekten arbeiten oder so ? Ansonsten würde ich dir raten die Funktion as double zu deklarieren, ich glaube zwar nicht dran, aber es könnte sein dass sich Variant nicht einfach so in eine Stringvariable zwingen läßt.

Ansonsten schliesse ich mich Klotzkopp an, einen leeren String zu übergeben führt mit Sicherheit zur Divison durch Null. Und bei einem Vergleich müssen die Datentypen der Ausdrücke gleich sein. Wenn überhaupt würde ich dieser Stelle mit CStr bzw. Cdbl konventieren.

Ich hoffe dass ich die Logik hinter dem Code richtig verstanden hab, wenn ja, dann versuch bitte erstmal die Variablen auf double zu setzen.

So long

Feivel

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.