IF-Anweisung?

marcap

Mitglied
Hallo,

Benötige eine Funktion die Prüft von welchem Datentyp der Inhalt einer bestimmten Zelle ist.

Dazu habe ich folgende Funktion definiert:
Code:
'Übergabepar: column, row, expected Datatype
Public Function check_data_type(ByVal column As Integer, ByVal row As Integer, data_type As Integer) As Boolean

Bei folgender IF-Anweisung liegt das Problem, es wird immer der Else-Zweig aufgerufen:
Code:
    'If VarType = expected VarType then return True
    If VarType(Cells(column, row)) = data_type Then
        check_data_type = True
    'If not, then generate Error
    Else
        'Err.Raise 51
        Error 51
    End If

Aufgerufen wird die Funktion folgendermaßen:
Code:
Dim testvar As Integer
testvar = 8

erg = check_data_type(5, 3, testvar)

In der zu Prüfenden Zelle ist ein String also ein Wort eingetragen

Ich hoffe mir kann jemand sagen wie ich die Abfrage korrigiere, tut mir leid für eine so einfache Frage, allerdings bin ich absoluter VBA-!

Vielen Dank für eure Hilfe
 
Hi.

Lass dir doch einfach mal mit einer MsgBox in der Funktion den VarType ausgeben, da siehst du dann schon woran es liegt - vermutlich ist das einfach kein String.

Gruß
 
Ja, 8 bedeutet string. Wenn dem so ist und der Parameter data_type auch 8 ist, dann sollte auf jeden Fall nicht der Else-Zweig ausgeführt werden.

Du kannst ja mal in die Funktion einen Haltepunkt (mit F9) einfügen und dort direkt schauen was für Werte die einzelnen Variablen und Ausdrücke haben.

Gruß
 
Also habe jetzt herausgefunden wo das Problem lag:

Ich habe die Funktion wie folgt aufgerufen und dannach auf "true" abgefragt:

Code:
erg = (check_data_type(8, , , True, Cells(1, 5).Value))
If (erg = "True") Then

Da war der Fehler entweder man fragt ab:
Code:
erg = "Wahr"

oder
Code:
erg = True

Vielen dank für eure Hilfe
 
marcap hat gesagt.:
Code:
erg = (check_data_type(8, , , True, Cells(1, 5).Value))
If (erg = "True") Then

Da war der Fehler entweder man fragt ab:
Code:
erg = "Wahr"

oder
Code:
erg = True
Oder einfach
Visual Basic:
If erg Then
Da du aber sowieso einen Fehler auslöst falls der Typ nicht übereinstimmt müßtest du gar nicht prüfen.

Gruß
 
Ja gut das war ja auch nur eine Debugfunktion ob die Funktion auch wirklich das Tut was sie soll ;) Ansonsten fällt die IF weg ;) Aber vielen dank für den super Tip (gleich weiterverwendet)
 
Zurück