Variable auf Basis der ausgewählten Zelle deklarieren / Excel
piston 22. Feb. 2013, 10:46

Hallo!


Ich habe folgendes Problem:

Ich lese über ein Makro den Inhalt einer Zelle aus. Dieser kann über eine InputBox geändert werden und soll wieder in die Zelle geschrieben werden.

Nun ist der ursprüngliche Inhalt einmal ein Text und einmal eine Kommazahl. Je nach dem wie ich die Variable deklariere "String" oder "Long" stimmt es einmal oder das Makro bricht überhaupt ab.

Gibt es die Möglichkeit, das ich das "Format" der ausgewählten Zelle auslese und auf dieser Basis die Variable deklariere?

Kurz gesagt:
Wenn in der Zelle ein Text steht soll ein Text zurückgegeben werden und wenn eine Kommazahl steht eine Kommazahl.

DANKE!!!

HenryV 22. Feb. 2013, 11:06

Hallo piston

Hab im Netz mal eine Funktion gefunden und umgeschrieben -> http://www.j-walk.com/ss/excel/tips/tip62.htm

Code:
Function CellType(Zelle As String)
    Application.Volatile
    Dim c As Object
    Set c = Range(Zelle)
    Select Case True
        Case IsEmpty(c)
            CellType = "Leer"
        Case Application.IsText(c)
            CellType = "Text"
        Case Application.IsLogical(c)
            CellType = "Logik"
        Case Application.IsErr(c)
            CellType = "Fehler"
        Case IsDate(c)
            CellType = "Datum"
        Case InStr(1, c.Text, ":") <> 0
            CellType = "Zeit"
        Case IsNumeric(c)
            CellType = "Zahl"
    End Select
End Function

Test-Aufrufen für Zelle "A1"

Code:
msgbox CellType("A1")

Gruss Andreas

Beverly 22. Feb. 2013, 14:57

Hi,

den Typ einer Variablen kannst du nicht im Nachhinein deklarieren. Deklariere sie als Variant, dann kann sie alle Dimensionen annehmen.