Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1000to1004
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

IsNumeric

IsNumeric
22.08.2008 18:10:00
Artur
Hallo User,
ich habe ein Problem mit der Anzeige einer Userform. Es soll ein OptionButton angezeigt werden wenn sich z. B. In A2 eine Zahl und kein Buchstabe eingetragen ist. Bei den Werteübergabe in A3 und A4 klappt das auch. Nur nicht in der zelle A2. Ich finde aber nicht den Grund warum das in A2 nicht genau so gehandhabt wird. Für Eure Hilfe wäre ich Dankbar.
Ein Beispiel einer recht umfanreichen Userform: https://www.herber.de/bbs/user/54825.xls
Gruß Artur

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

Betreff
Datum
Anwender
Anzeige
AW: IsNumeric
22.08.2008 18:31:00
Nepumuk
Hallo Artur,
IsNumeric liefert Wahr(-1) oder Falsch(0) zurück. Diese Abfrage: IsNumeric(Funk1) <= 9999 liefert immer Wahr zurück da 0 und -1 auf alle Fäller kleiner ist als 9999.
Gruß
Nepumuk

AW: IsNumeric
22.08.2008 18:46:55
Artur
Hallo Nepumuk,
vielen Dank für Deine Antwort. Wie kommt es aber, wie in meinem Beispiel, das a in A2 auch als Zahl gewertet wird, und der OptionsButton1 angezeigt wird? Um die Werte über 10000 abfangen zu können muß ich dann eine zweite If-Abfrage vor bzw. hinter der ersten setzen?
Gruß Artur

AW: IsNumeric
22.08.2008 19:32:11
hary
Hallo Artur
Habe den 1 Code nur fuer Funk1 umgestellt. So funz es. Warum machst Du die Eingabe nicht von der Gueltigkeit abhaengig? Nur Zahlen zulassen dann sparst Du einen Teil des Codes. Probier mal diesen, wiegesagt nur fuer Funk1. Nimmst den alten raus und Kopierstdiesen rein. A2 und A3 keinen Eintrag sonst Fehlermeldung.

Option Explicit
Dim Funk1
Dim Funk2
Dim Funk3
Private Sub CommandButton1_Click()
Unload Me
End Sub
Private Sub UserForm_Initialize()
Label1.Caption = ThisWorkbook.Worksheets("Tabelle1").Range("A1")
Label2.Caption = ThisWorkbook.Worksheets("Tabelle1").Range("B1")
Funk1 = ThisWorkbook.Worksheets("Tabelle1").Range("A2")
Funk2 = ThisWorkbook.Worksheets("Tabelle1").Range("A3")
Funk3 = ThisWorkbook.Worksheets("Tabelle1").Range("A4")
If IsNumeric(Funk1) = False Then
OptionButton1.Visible = False
OptionButton1.Caption = ""
OptionButton1.ControlTipText = ""
Label3.Visible = False
Label3.Caption = ""
MsgBox "Bei A2 handelt sich nicht um eine Zahl !"
Else
If Funk1 > 0 And Funk1 


Gruss Hary
muss gleich zur Arbeit

Anzeige
AW: IsNumeric
22.08.2008 20:23:00
Nepumuk
Hallo Harry,
Funk1 ist als Variant deklariert. Diese hat als initialwert Empty. Teste mal folgendes:
Public Sub Test1()
    Dim vntVariable As Variant
    MsgBox IsNumeric(vntVariable)
End Sub

Eine leere Zelle hat auch den Wert Empty. Wenn du also eine Variant-Variablen eine leere Zelle zuweist, ändert sich deren Wert nicht. Einfach mal mit einer leeren Zelle testen:
Public Sub Test2()
    MsgBox IsNumeric(Cells(1, 1).Value)
End Sub

Ist nun eine leere Zelle eine Zahl? Folgender Test beweist es:
Public Sub Test3()
    MsgBox Empty = 0
End Sub

Und der Gegentest:
Public Sub Test4()
    MsgBox Empty = ""
End Sub

Was nun? Eine leere Zelle ist sowohl eine Zahl wie ein leerer String. Der Wert Empty ist tatsächlich ein Zwitter. Darum musst du wenn du wirklich wissen willst, ob in der Zelle eine Zahl steht nicht die Value-Eigenschaft benutzen, sondern die Text-Eigenschaft. Beispiel:
Public Sub Test5()
    MsgBox IsNumeric(Cells(1, 1).Text)
End Sub

Außerdem, Die Funktionen IsNumeric, IsDate, IsArray, IsEmpty usw. geben einen boolschen Wert zurück. Also Wahr oder Falsch. In dieser Konstruktion:
If IsNumeric(Funk1) = False Then

vergelichst du den boolschen Rückgabewert der Funktion mit einer boolschen Konstanten um wieder einen boolschen Wert, nämlich Wahr oder Falsch zurückzubekommen, den du dann auswertest. Warum also nicht gleich den Rückgabewert der Funktion auswerten? Also einfach:
If Not IsNumeric(Funk1) Then

Gruß
Nepumuk

Anzeige
AW: IsNumeric
22.08.2008 21:18:00
Artur
Hallo Hary und Nepumuk,
vielen Dank für Eure Ausführungen. Werde leider erst morgen zum Testen kommen da ich jetzt Feierabend machen darf.
Euch Beiden ein schönes Wochenende, bis auf Bald
Gruß Artur

AW: IsNumeric
22.08.2008 21:25:08
Gerd
Hallo,
noch 'ne Alternative:
If Application.IsNumber(funk1)
Grüße Gerd

AW: IsNumeric
22.08.2008 22:12:10
hary
Hallo Artur
Versuch mal diese Mappe. Bin gerade Unterwegs gleich kommt wieder ein Lan-Loch.
https://www.herber.de/bbs/user/54832.xls
Gruss Hary
Danke an Nepumuk

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige