Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Abzug Wert über mehrere Zellen
#11
Hallo zusammen,

vielen Dank. Der Code funktioniert!

Grüße
Zofomuko
Antworten Top
#12
Hallo,

ich habe heute bei Tests einen Fehler festgestellt, den ich mir nicht erklären kann.
Die Zellen mit den Überstunden sind als "Zahl" mit zwei Nackommastellen formatiert.
Wenn ich nun mit Nachkommastellen subtrahieren möchte, bleiben die Stellen unberücksichtigt.
Wenn ich also rechne 2,34-1,21 wird als Ergebnis 1,34 ausgegeben.

Kann mir das jemand erklären?

Gruß
Zofomuko
Antworten Top
#13
Ändern As Integer in As Single

Mfg
Antworten Top
#14
Hi,

Die Datentypen Integer und Long sind nur für Ganzzahlen geeignet, wobei man auf Integer eigentlich verzichten kann, da Excel diese intern sowieso in Long umwandelt, bevor sie benutzt werden.
Für Dezimalzahlen bieten sich Single oder Double an.

http://www.vba-tutorial.de/variablen/datentypen.htm
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Antworten Top
#15
Hi,

wenn Excel-intern sowieso Integer in Long umgewandelt wird, wird dann auch Single in Double umgewandelt?
Antworten Top
#16
Moin Ralf!
Mal abseits der Theorie, warum man Long statt Integer nehmen sollte:
(die marginalen Zeit-Unterschiede merkt man nicht wirklich; der Speicherbedarf ist ebenfalls drittrangig)

Lasse mal dieses simple Makro laufen und berichte von Deinen vor Schreck geweiteten Augen, wenn Du in den Überlauf rennst.  :21:
Schaue mal ins Lokalfenster und lasse Dir die Werte der Variablen anzeigen!
(Überlauf??? Ich habe doch ausreichend dimensioniert?)

Sub Int_Long()
Dim i As Integer, k As Integer
Dim Ergebnis As Long
For i = 1 To 1000
  For k = 1 To 1000
    Ergebnis = i * k
  Next
Next
Debug.Print Ergebnis
End Sub

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#17
Und ergänzend:
Damit habe ich Edgars Theorie, wonach VBA einen Integer intern in einen Long umwandelt, eindeutig widerlegt!
;)
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#18
Hi,

(20.09.2017, 09:47)RPP63 schrieb: (die marginalen Zeit-Unterschiede merkt man nicht wirklich; der Speicherbedarf ist ebenfalls drittrangig)

stimmt, da kommt sofort ein Überlauf.
Wenn ich i oder k oder beide zu Long mache, kommt das Ergebnis.
Antworten Top
#19
Hi,

die Theorie ist nicht von mir, ich habe es nur übernommen. Ich weiß nur, dass einige der Koryphäen es immer wieder so veröffentlichen.
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Antworten Top
#20
Hi,

Gelöscht
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste