Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Datentyp abfragen / Integer verifizieren

Forumthread: Datentyp abfragen / Integer verifizieren

Datentyp abfragen / Integer verifizieren
13.09.2003 23:29:14
Björn
Hei :-)

kann mir gerade jemand sagen, wie man den Datentyp einer Variablen abfragen kann bzw. verifizieren kann, ob eine Variable eine Ganzzahl ist? Leider gibt es ja keine Funktion IsInteger wie die IsNumeric-Function.

Einmal mehr Dank für jeden Hint.

Viele Grüße

Björn
Anzeige

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

Betreff
Datum
Anwender
Anzeige
Hat sich erledigt / danke
13.09.2003 23:36:55
Björn
Huhu,

ich habe es gefunden. TypeName(Variable). Sorry. Hatte aber wirklich eine Zeilang in der Hilfe gesucht, bis ich es gefunden habe. Nicht immer besonders kontextnah die Online--Hilfe zu VBA in xl 97. Mit PHP 's gettype usw. kommt man nicht wirklich weiter.

Gruß

Björn
Anzeige
AW: Datentyp abfragen / Integer verifizieren
13.09.2003 23:38:47
PeterW
Hallo Björn,

Variablen werden in VBA doch (sinnvollerweise) deklariert und (noch sinnvoller) entsprechend ihres Types benannt. Was genau möchtest du abfragen/erreichen?

Gruß
Peter
AW: Datentyp abfragen / Integer verifizieren
14.09.2003 00:15:52
Björn
Huhu Peter,

Du hast Recht. Genau genommen will ich den Datentyp eines Eingabewerts in ein Textfeld abfragen. Mit TypeName komme ich da auch nicht weiter, weil TypeName für eine Dezimale genauso String zurückgibt wie für eine Ganzzahl :-(. Wie prüft man denn am sinnvollsten, ob der Eingabewert eine Ganzzahl ist??? Danke für den Hinweis.

Viele Grüße

Björn
Anzeige
AW: Datentyp abfragen / Integer verifizieren
14.09.2003 00:39:21
PeterW
Hallo Björn,

in einem Textfeld steht immer Text, also ein String. Schau dir mal VAL in der VBA-Hilfe an, das bringt dich vielleicht weiter. Die Ganzzahlprüfung könnte z.B. sein
If CDbl(Textbox) - CInt(Textbox) > 0

Gruß
Peter
AW: Datentyp abfragen / Integer verifizieren
14.09.2003 01:18:42
Björn
Huhu Peter,

Danke für die Hilfestellung! Ohne sie hätte ich bestimmt noch eine ganze Weile herumexperimentiert und vielleicht sogar auf die Prüfung verzichtet. Ich hab mich jetzt für Deinen Ansatz über die Typenzuweisung entschieden. Das Script sieht jetzt wie nachstehend aus, wobei textbox13 ein Textbox ist, in dem ein der Tageswert eines Datums eingegeben werden soll und Textbox14 ein weiteres Eingabefeld für den Monat des Datums.
Ich hatte daneben noch überlegt, eine Variable vom Typ Vyte zu definieren und zu prüfen, ob die Zuweisung dieser Variablen zum Wert der Textbox einen Fehler liefert. In etwa:
Dim Tag as Bbyte
If iserror(Tag=textbox13.value) then
(...)
end if
Aber das ist wohl auch nicht zielführend. Danke nochmals und gute Nacht :-).

Gruß

Björn




Private Sub TextBox14_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If IsNumeric(TextBox14.Value) Then
If TextBox14.Value > 0 And TextBox14.Value < 32 And CDbl(TextBox14.Value) - CByte(TextBox14.Value) = 0 Then
If TextBox14.Value <> "" And TextBox15.Value <> "" Then
If Day(DateSerial(2004, TextBox15.Value, TextBox14.Value)) = Val(TextBox14.Value) Then
TextBox14.ForeColor = &H0
Ausgabe
'wenn kein gültiges Datum
Else
MsgBox "Bitte gültigen Wert für den Tag der Grundfälligkeit eingeben. Im Monat " & TextBox15.Value & " gibt es keinen Tag " & TextBox14.Value, vbCritical, "Kein gültiges Datum"
Cancel = True
End If
'wenn keine Ganzzahl im Feld Monat der Grundfälligkeit, wechsele zu Monat der GF
Else
TextBox14.ForeColor = &H0
Ausgabe
End If
'---wenn kleiner 1, oder größer 31 oder keine Ganzzzahl
Else
MsgBox "Bitte Tag der Grundfälligkeit als Ganzzahl eingeben.", vbCritical, "Unzulässiger Eingabewert"
Cancel = True
End If
'---Wenn nicht numeric
Else
MsgBox "Unzulässiger Eingabewert. Bitte Tag der Grundfälligkeit als Zahl eingeben", vbCritical, "Unzulässig"
Cancel = True
End If
End Sub

Anzeige
AW: Datentyp abfragen / Integer verifizieren
14.09.2003 01:25:30
PeterW
Hallo Björn,

das geh ich jetzt nicht mehr durch, bin auch schon zu lange am Rechner. Wir lesen uns morgen - wenn nicht ein anderer Nachtschwärmer Langeweile hat und eine Lösung anbietet. :-)

Gruß
Peter
AW: Datentyp abfragen / Integer verifizieren
14.09.2003 01:52:35
Björn
Huhu Peter,

war auch nur gedacht, falls (später) mal jemand was Ähnliches sucht. So weit ich das bis jetzt sehe funktioniert's. Schlaf gut :-)

Gruß

Björn
Anzeige
;

Forumthreads zu verwandten Themen

Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Infobox / Tutorial

Datentyp abfragen und Integer verifizieren in Excel VBA


Schritt-für-Schritt-Anleitung

Um den Datentyp einer Variablen in Excel VBA abzufragen und zu verifizieren, ob es sich um eine Ganzzahl (Integer) handelt, kannst Du die folgenden Schritte befolgen:

  1. Variable deklarieren: Definiere Deine Variablen. Stelle sicher, dass Du den Typ der Variablen korrekt angibst.

    Dim Tag As Byte
  2. Eingabewert prüfen: Verwende die IsNumeric-Funktion, um sicherzustellen, dass der Wert numerisch ist.

    If IsNumeric(TextBox14.Value) Then
  3. Ganzzahlprüfung: Um zu prüfen, ob es sich um eine Ganzzahl handelt, kannst Du eine Berechnung ausführen, um zu sehen, ob der Unterschied zwischen dem Wert als Double und Byte gleich Null ist.

    If CDbl(TextBox14.Value) - CByte(TextBox14.Value) = 0 Then
  4. Fehlermeldungen: Implementiere Fehlermeldungen für ungültige Eingaben.

    MsgBox "Bitte Tag der Grundfälligkeit als Ganzzahl eingeben.", vbCritical, "Unzulässiger Eingabewert"

Häufige Fehler und Lösungen

  • Fehler: TypeName gibt nicht den erwarteten Typ zurück
    Lösung: TypeName gibt für Ganzzahlen und Dezimalzahlen beide "String" zurück. Verwende stattdessen IsNumeric und eine Typprüfung wie oben beschrieben.

  • Fehler: Eingabewerte sind nicht validiert
    Lösung: Stelle sicher, dass Du alle möglichen Eingabewerte überprüfst, um sicherzustellen, dass sie im gewünschten Bereich liegen (z.B. 1-31 für Tage).


Alternative Methoden

Wenn Du eine andere Methode zum Überprüfen des Datentyps verwenden möchtest, kannst Du auch die Funktion VBA.GetType in Betracht ziehen, um den Datentyp zu ermitteln. Diese Methode kann hilfreich sein, um den Typ einer Variablen zu bestimmen, bevor Du weitere Berechnungen anstellst.


Praktische Beispiele

Hier ist ein praktisches Beispiel für die Verwendung eines Textfeldes zur Eingabe eines Tageswerts und dessen Validierung:

Private Sub TextBox14_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    If IsNumeric(TextBox14.Value) Then
        If TextBox14.Value > 0 And TextBox14.Value < 32 And CDbl(TextBox14.Value) - CByte(TextBox14.Value) = 0 Then
            ' Gültiger Tag
        Else
            MsgBox "Bitte gültigen Wert für den Tag der Grundfälligkeit eingeben.", vbCritical, "Kein gültiges Datum"
            Cancel = True
        End If
    Else
        MsgBox "Unzulässiger Eingabewert. Bitte Tag der Grundfälligkeit als Zahl eingeben", vbCritical, "Unzulässig"
        Cancel = True
    End If
End Sub

Tipps für Profis

  • Verwende Dim zur Deklaration: Deklariere immer Deine Variablen mit dem spezifischen Datentyp, um die Lesbarkeit und Wartbarkeit Deines Codes zu erhöhen.

  • Nutze Option Explicit: Füge Option Explicit zu Beginn Deiner Module hinzu, um sicherzustellen, dass alle Variablen deklariert werden, was Fehler reduziert.

  • Fehlerbehandlung: Implementiere eine Fehlerbehandlung, um unerwartete Eingaben oder Laufzeitfehler abzufangen.


FAQ: Häufige Fragen

1. Wie kann ich prüfen, ob eine Variable vom Typ Integer ist?
Du kannst die IsNumeric-Funktion verwenden und dann eine Berechnung durchführen, um sicherzustellen, dass der Wert eine Ganzzahl ist.

2. Gibt es eine Funktion wie IsInteger in VBA?
VBA bietet keine direkte IsInteger-Funktion. Du kannst jedoch den oben beschriebenen Ansatz verwenden, um dies zu überprüfen.

3. Wie gehe ich mit ungültigen Eingaben in einem Textfeld um?
Implementiere eine Prüf- und Fehlermeldungsroutine, die den Benutzer auf ungültige Eingaben hinweist, wie im praktischen Beispiel gezeigt.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige