vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Schützen Sie Ihre Software vor Software-Piraterie - mit sevLock 1.0 DLL!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Visual-Basic Einsteiger
Problem mit Formel und varialble 
Autor: raymound
Datum: 27.11.12 14:23

Hallo,
ich habe den code:

Private Sub Command1_Click()
Dim x As Variant
x = lbGB1
Dim y As Variant
y = tbMBrest1

If x < y Then
MsgBox "kleiner"
End If

MsgBox "" & x - y
End Sub

Problem:
MsgBox "" & x - y liefert das richtige Ergebnis
Der If-Block wird aber immer übergangen, auch wenn x kleiner ist.

Warum nur????

VG Ray
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Problem mit Formel und varialble 
Autor: Blackbox
Datum: 27.11.12 14:44

Hallo,

richtig (naja, fast) wäre es so:

Private Sub Command1_Click()
Dim x As Variant
x = "lbGB1"
Dim y As Variant
y = "tbMBrest1"

If x < y Then
MsgBox "kleiner"
End If

MsgBox "" & x - y
End Sub
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Geht nicht ErrMld Type Mismatch 
Autor: raymound
Datum: 27.11.12 14:53

...kann das daran liegen, das lbGB1 ein Label und das andere eine TextBox ist?
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Geht nicht ErrMld Type Mismatch 
Autor: Preisser
Datum: 27.11.12 15:46

Hallo,

deshalb sollte man ja auch immer Variablentypen explizit angeben und kein Variant verwenden, sowie korrekt konvertieren.

Die Default-Properties von Textbox und Label liefern ja einen String (natürlich auch wenn dort eine Zahl drinsteht), und dann wird bei x < y ein Stringvergleich durchgeführt, während aber bei x - y die Strings implizit in Zahlen (Doubles) konvertiert werden, welche anschließend subtrahiert werden.

Ein Beispiel wäre für x der String "5" und für y der String "10". Der Ausdruck x < y würde dann false ergeben, da eine "1" beim Stringvergleich vor der "5" kommt.

Korrekterweise müsste man z. B. die Sachen vorher in eine Zahl konvertieren.

Dim x As Double
x = CDbl(lbGB1)
Dim y As Double
y = CDbl(tbMBrest1)
 
If x < y Then
    MsgBox "kleiner"
End If


Beitrag wurde zuletzt am 27.11.12 um 15:48:38 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Suuuuuuper Erklärung vielen vielen Dank - große Hilfe mGruss oT 
Autor: raymound
Datum: 27.11.12 15:57

...
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel