Das Wort zum Sonntag
24.02.2008 17:26:01
Nepumuk
nachdem ich das immer wieder sehe, muss ich das mal ansprechen.
Dim ByI As Byte, ByX As Byte
Rows(ByI) .....
Columns(ByI) .....
Cells(ByI, ByX) .....
Rows(ByI) .....
Columns(ByI) .....
Cells(ByI, ByX) .....
Das bringt nix.
Ok, an Stelle von 4 Byte für einen Long-Datentyp benötigt man anscheinend nur 1 Byte.
Toll 3 Byte gespart. Aber bei 512 Megabyte = 536.870.912 Byte Stackframe pro geöffneter Excelmappe spielen die 3 Byte nun wirklich keine große Rolle.
Was viel entscheidender ist, die Rows -, Columns- und Cells - Eigenschaft des Range - Objektes verlangt als numerischen Wert eine Zahl vom Typ Long. Was passiert nun, wenn ich dem eine Zahl im Byte-Format gebe?
Der Datentyp wird automatisch in einen Typ Long konvertiert.
Dazu wird der Byte-Wert in einen neuen Speicherbereich geschrieben, welcher das gewünschte 4 Byte Format hat. Also nix gespart, sondern sogar 1 Byte zusätzlich verbraten.
Außerdem kostet es natürlich etwas Zeit den Speicher zu reservieren, und den Wert im richtigen Format reinzuschreiben.
Das mag ja alles kleinlich erscheinen, da man als User von der ganzen Sache überhaupt nichts mitbekommt und auch der zusätzliche Zeitaufwand ist eigentlich minimal (ich schätz mal weniger als eine Sekunde wenn ich das 1.000.000mal mache). Aber ich hab halt mit Assembler angefangen und da gabs keine automatische Konvertierung, sondern einen Programmabsturz wenn man auch nur ein Byte daneben lag.
Gruß
Nepumuk