zu Long Integer Byte Deklaration bei z.B. Cells(,)
Hallo Lae,
Änderung von Integer auf Long weil:
.Cells(Zahl1,Zahl2) sowieso innerbetrieblich erst beide Zahlen
in Long wandelt BEVOR es quasi loslegt.
Zeitverlust wird bei 100 Zellen logisch nicht fühlbar, was ist
aber mit 100 Milliarden Zellen!
Und, an sich der Hauptgrund warum ich mir das angewöhnt habe
es ist für mich viel einfacher grundsätzlich immer alles was
mit zeilen und Spalten zu tun hat als Long zu deklarieren.
Naja, das ist nun gar kein grund.
soll ich auch mal so virtuelle argumente bringen die hier ech
nicht zutreffen aber irgentwann mal zutreffen könnte .
von mir ignoriert da es persönlicher Angriff also OT ist.
Also ich hab ein speicher mit 1kilobyte für meine Daten.
wenn ich die zahlen alle in int speicher dann brauch ich
2-byte
mit long
4 bytes long
Bekannt.
wenn ich also kein platz habe ist es mit int besser .
Korrekt.
Da kann von mir aus auch intern mal 4 bytes temporär genutz
werden ,
das ändert aber nichts an meinem speicherverbrauch.
Nur teilweise richtig, ich bezog mich auf die Benutzung der Variablen in Cells(intA , intB)
Nachstehend ist dazu eine Aussage von Nepu und der spielt in der Königsliga der Excel-Vbaler.
Wenn du ihn anzweifelst naja *Schulterzuck*
P.S. man kann alles so oder so argumentieren, man sollte aber
irgentwie beim thema bleiben und nicht sein eigenes vorgehen
in ganz anderer situation profilieren .
Aus OT Gründen sag ich zu „profilieren“ nix
Ich blieb/war nur beim Thema und teilte mit wie ich in diesem Fall deklarieren würde.
Du „argumentierst“ daß du es anders deklarieren würdest.
Bitteschön.
Wie geschrieben finde ich es bei meinem Vorgehen sehr angenehm nicht jedes Mal aufs neue mir Gedanken zu machen, also kostbare Zeit verschleudern um darüber nachzudenken ob nun Zeilenanzahlen größer als 32xxx werden können oder ob ich für Spalten Byte oder Integer nehme.
Und wenn mein Code auch auf Fremdrechnern laufen soll so weiß ich ja nicht ob dort XL97 läuft oder XL 2010 wenn ich eine Variable im Code habe die dort die maximal mögliche Zeilen/Spaltenanzahl ausliest.
Gruß
Reinhard
Hallo an Alle,
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) …
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 gab’s keine automatische Konvertierung,
sondern einen Programmabsturz wenn man auch nur ein Byte daneben lag.
Gruß
Nepumuk