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

Forumthread: auf Ganzzahl prüfen

auf Ganzzahl prüfen
08.12.2015 09:14:36
Karsten
Hallo,
die Prüfung auf eine Ganzzahl funktioniert mit meinem Code so nicht.
Dim ungerundete_Wochen As Long
Dim Tage As Long
ungerundete_Wochen = Tage / 7
If TypeName(ungerundete_Wochen) = "Integer" Then
Exit Sub
End If
Wenn ich weiß, dass im Ergebnis 2 herauskommt und ich so codiere, klappt's. D.h. meine "ungerundete_Wochen" liefert das richtige Ergebnis.
If ungerundete_Wochen = 2 Then
Exit Sub
End If
Danke für eure Hilfe.
Gruß Karsten

Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: auf Ganzzahl prüfen
08.12.2015 09:28:20
Sepp
Hallo Karsten,
du deklarierst 'ungerundete_Wochen' as Long, warum sollte es zu Integer werden?
Long gibt dir immer eine Ganzzahl zurück!
Gruß Sepp

Anzeige
AW: auf Ganzzahl prüfen
08.12.2015 09:55:31
Karsten
Hallo Sepp,
da ich mich nicht ausreichen damit auskenne, wird es ein Ratespiel für mich. Bei der Rechnung "ungerundete_Wochen = Tage / 7" können nun aber auch Zahlen mit Komma werden, also Nicht-Integer.
Ich weiß nicht weiter.
Gruß Karsten

AW: auf Ganzzahl prüfen
08.12.2015 09:57:31
Sepp
Hallo Karsten,
nein, können sie eben nicht, weil Long nur Ganzzahlen zurückgibt!
Vielleicht solltest du beschreiben, was du genau vorhast, bzw. was passieren soll.
Gruß Sepp

Anzeige
AW: auf Ganzzahl prüfen
08.12.2015 10:46:36
Karsten
Hallo Sepp,
danke, aber Rudis Code funktioniert schon.
Gruß Karsten

ungerundete_Wochen ist immer ...
08.12.2015 09:59:55
Rudi
... eine Ganzzahl.
Was anderes lässt der Datentyp Long gar nicht zu.
Dim ungerundete_Wochen as Single
Dim Tage As Long
ungerundete_Wochen = Tage / 7
if int(ungerundete_Wochen) = ungerundete_Wochen then ...
Gruß
Rudi

Anzeige
AW: ungerundete_Wochen ist immer ...
08.12.2015 10:43:53
Karsten
Hallo Rudi,
danke, das suchte ich.
Gruß Karsten

AW: auf Ganzzahl prüfen
08.12.2015 10:38:40
Daniel
Hi
bei Divisionen ist das Ergebnis immer vom Typ Double, auch wenn das Ergebnis eine Ganzzahl ist.
dh darüber kannst du nicht herausfinden, ob die Division eine Ganzzahl ergeben hat.
um zu prüfen, ob Tage / 7 eine Ganzzahl ergibt, hast du folgende Möglichkeiten:
If Tage Mod 7 = 0
If Int(Tage / 7) = Tage / 7
If Fix(Tage / 7) = Tage / 7
Gruß Daniel

Anzeige
AW: auf Ganzzahl prüfen
08.12.2015 10:45:14
Karsten
Hallo Daniel,
mit Rudis Lösung ist mir erstmal geholfen. Danke für deine Erklärung.
Gruß Karsten
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Ganzzahlprüfung in Excel VBA


Schritt-für-Schritt-Anleitung

Um in Excel VBA zu prüfen, ob eine Zahl eine Ganzzahl ist, befolge die folgenden Schritte:

  1. Deklariere deine Variablen:

    Dim ungerundete_Wochen As Double
    Dim Tage As Long
  2. Führe die Division durch:

    ungerundete_Wochen = Tage / 7
  3. Prüfe, ob das Ergebnis eine Ganzzahl ist: Du kannst dies mit verschiedenen Methoden tun:

    If ungerundete_Wochen = Int(ungerundete_Wochen) Then
       ' Es handelt sich um eine Ganzzahl
    End If

    oder

    If Tage Mod 7 = 0 Then
       ' Es handelt sich um eine Ganzzahl
    End If

Häufige Fehler und Lösungen

  • Fehler: Der Datentyp ist nicht korrekt.

    • Lösung: Stelle sicher, dass du Long für ganze Zahlen und Double für Dezimalzahlen verwendest. Long gibt immer eine Ganzzahl zurück, während Double auch Dezimalwerte annehmen kann.
  • Fehler: Die Prüfung auf eine Ganzzahl funktioniert nicht.

    • Lösung: Achte darauf, dass bei Divisionen das Ergebnis normalerweise vom Typ Double ist. Verwende Int() oder Fix(), um zu überprüfen, ob das Ergebnis eine Ganzzahl ist.

Alternative Methoden

Es gibt verschiedene Wege, um in Excel VBA eine Ganzzahl zu prüfen:

  1. Mod-Operator: Verwende den Mod-Operator, um festzustellen, ob der Rest einer Division null ist:

    If Tage Mod 7 = 0 Then
       ' Ganzzahl
    End If
  2. Int-Funktion: Vergleiche das Ergebnis der Division mit dem ganzzahligen Wert:

    If Int(Tage / 7) = Tage / 7 Then
       ' Ganzzahl
    End If
  3. Fix-Funktion: Eine weitere Möglichkeit ist die Verwendung der Fix()-Funktion:

    If Fix(Tage / 7) = Tage / 7 Then
       ' Ganzzahl
    End If

Praktische Beispiele

Hier sind einige Beispiele zur Anwendung der VBA Ganzzahl-Prüfung:

  1. Beispiel mit Mod-Operator:

    Dim Tage As Long
    Tage = 14
    If Tage Mod 7 = 0 Then
       MsgBox "Es ist eine ganze Zahl."
    End If
  2. Beispiel mit Int-Funktion:

    Dim ungerundete_Wochen As Double
    ungerundete_Wochen = 28 / 7
    If Int(ungerundete_Wochen) = ungerundete_Wochen Then
       MsgBox "Es ist eine ganze Zahl."
    End If

Tipps für Profis

  • Verwende Typen bewusst: Achte darauf, welche Datentypen du verwendest. Long ist ideal für ganze Zahlen, während Double für Berechnungen mit Dezimalzahlen verwendet wird.
  • Fehlerbehandlung: Füge Fehlerbehandlungsroutinen hinzu, um unerwartete Eingaben abzufangen.
  • Kommentiere deinen Code: Klare Kommentare helfen, den Code verständlich zu halten, insbesondere bei komplexen Berechnungen.

FAQ: Häufige Fragen

1. Wie kann ich in Excel prüfen, ob eine Zahl eine ganze Zahl ist?
Du kannst dies mit der Int()-Funktion oder dem Mod-Operator tun, um zu überprüfen, ob der Rest der Division null ist.

2. Warum gibt die Division in VBA eine Dezimalzahl zurück?
In VBA führt die Division von zwei Zahlen immer zu einem Ergebnis vom Typ Double, selbst wenn die resultierende Zahl eine Ganzzahl ist.

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