Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1780to1784
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

Integer

Integer
05.09.2020 22:44:20
Roland
Guten Tag
wollte gerade in VB6 ein umrechnung machen
Dim x As integer
Jetzt bin ich davon Ausgegangen bei integer zeigt er mir einen Wert ohne Komma an , das stimmt aber nicht
wie kann ich in VBA 6 reine integer werde bekommen z.B
x = 100 0 / 256
x = 3 und nicht 3,9

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW x = 1000 \ 256 owt
05.09.2020 23:05:27
Daniel
Gruß Daniel
AW: Integer
05.09.2020 23:42:11
GerdL
Moin Roland,
in VBA kommt es drauf an, wie das Ergebnis zu runden ist.
x= Fix(1000/256)
Gruß Gerd
AW: Integer
06.09.2020 09:28:11
Hajo_Zi
bei mir wird der korrekte Wert angezeigt.
Sub n()
Dim x As Integer
x = 1000 / 256
MsgBox x
x = 3
MsgBox x
End Sub

AW: Integer
06.09.2020 10:01:52
volti
Hallo zusammen,
eine als Integer dimensionierte Variable darf nur Ganzzahlen beinhalten. Und das ist bei mir auch so (VBA7, 64 Bit). Bei VBA6 müsste es genauso sein.
Die Frage ist allerdings, welche Ganzzahl die Variable bei einem Realwert von 3,906 letztendlich hat, denn sowohl 3 als auch 4 sind ja denkbar. Die 4 wäre näher an der Realität, so dass ich ich Ausgabe von 3 nicht ganz nachvollziehen kann, es sei denn, man will es so haben.
Hier ein Experimentiercode wie es hier bei mir aussieht.
Sub Test()
 Dim x As Integer
 
 x = 1000 / 256
 Debug.Print 1, 1000 / 256
 Debug.Print 2, x
 Debug.Print 3, Int(x)
 Debug.Print 4, Round(x, 0)
 x = 1000 \ 256
 Debug.Print 5, x
 Debug.Print 6, 1000 \ 256
 Debug.Print 7, Fix(1000 / 256)
End Sub
Und die Ergebnisse:
1 => 3,90625
2 => 4
3 => 4
4 => 4
5 => 3
6 => 3
7 => 3
Gruß Karl-Heinz
Anzeige
AW: Integer
06.09.2020 14:19:05
Zwenn
Hallo Karl-Heinz,
für Variablen eines Ganzzahltyps wird der Nachkommateil eifach abgeschnitten. Da wird nix gerundet. Das ist meines Wissens nach in jeder Programmiersprache so. In VBA kann man das Ausnutzen, um einen Zeitstempel bestehend aus Datum uns Uhrzeit zu trennen. Aufrunden wäre da schlecht ;-)

Sub zeitStempelTeilen()
Dim zeitStempel As Date
Dim nurDatum As Date
Dim nurUhrzeit As Date
zeitStempel = Now()
nurDatum = Int(zeitStempel)
nurUhrzeit = zeitStempel - Int(zeitStempel)
MsgBox "Zeitstempel: " & zeitStempel & " (" & CDbl(zeitStempel) & ")" & Chr(13) & _
"Datum: " & nurDatum & " (" & CLng(nurDatum) & ")" & Chr(13) & _
"Uhrzeit: " & nurUhrzeit & " (" & CDbl(nurUhrzeit) & ")"
End Sub
Viele Grüße,
Zwenn
Anzeige
AW: Integer
06.09.2020 22:16:12
volti
Hallo Zwenn,
danke für Deine Ausführungen. Auch mein bisheriger Kenntnisstand ist so wie Du sagst.
Trotzdem habe ich es (für meinen Rechner) hier schwarz auf weiß und hier noch mal in Prosa:
Dimensioniere ich x als Integer und fülle es mit der Rechenoperation 1000/256 enthält diese Variable den Wert 4.
Lasse ich mir die Variable als Int(x) ausgeben, bleibt es bei der 4
Lasse ich mir nur Int(1000 / 256) anzeigen, wird eine 3 ausgeben.
Dim x As Integer
x = 1000 / 256
Debug.Print x = 4
Debug.Print Int(1000 / 256) = 3
Debug.Print Int(x) =4
Gruß KH
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige