Clever-Excel-Forum

Normale Version: VBA-Nachhilfe Variablendeklaration
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Vermutlich meintest Du statt Deiner höflicheren Eingangsfrage in Wirklichkeit: "Deklarierst Du etwa nicht?"  :19:

"As Integer" ist zwar weiterhin möglich, aber langsamer als Long, da es a) intern in Long konvertiert wird und b) trotzdem auf gültige Integer geprüft wird. Habe ich zumindest mal irgendwo gelesen.
Hallo Lupo,

Zitat:"As Integer" ist zwar weiterhin möglich, aber langsamer als Long, da es a) intern in Long konvertiert wird und b) trotzdem auf gültige Integer geprüft wird. Habe ich zumindest mal irgendwo gelesen.

Das habe ich mal ins Forum geschrieben. Ich habe das aus einem schlauen Buch,
weil Microsoft mich leider nicht über die Schulter schauen läßt  :05:


@ Günter,

Zitat:Dim i, j As Integer

... ist insofern falsch, da in dieser Form i = Variant ist und nur j = Integer

Dim i as integer, j as integer wäre richtig.
Wäre mir aber ab Excelversionen >= Excel2007 zu fehleranfällig.
Alleine schon darum würde ich anstatt Integer besser Long nutzen.
Hallo Lupo, hi Peter,

danke für die VBA-Schulung (das ist nicht ironisch, sondern ehrlich gemeint!). Ich hatte vor Kurzem schon einmal einen ähnlichen Tipp gegeben und die VBA-Spezies um eine Hilfestellung zu Integer gebeten. Das ist aber vermutlich irgendwo in dem damaligen Beitrag untergegangen.

Ich stecke, was VBA angeht, nicht nur in Kinderschuhen sondern noch in Babyschühchen (meine eigene Einschätzung in meinem Profil: ich kann Makros aufzeichnen!! Wow!! Wink trifft absolut zu).

@Peter

Deine Erklärung hat mir sehr geholfen; die Schreibweise, die ich verwendet habe, habe ich, wie kann's anders sein, irgendwo gelesen und (unreflektiert) übernommen. Wieso ich überhaupt INTEGER verwendet habe, ist dieser Seite geschuldet: http://www.vba-tutorial.de/variablen/datentypen.htm und daraus speziell

[
Bild bitte so als Datei hochladen: Klick mich!
]

Nachtrag:

Zitat:Wäre mir aber ab Excelversionen >= Excel2007 zu fehleranfällig.


Kannst du mir das bitte noch etwas näher erläutern?
Hallo Günter,

Zitat:Kannst du mir das bitte noch etwas näher erläutern?

gerne und ganz einfach, wieviele Zeilen gibt es denn in den von mir angesprochenen Versionen?
Du hast es ja selbst rot eingerahmt. Da steigt Integer einfach aus.
Hi Peter,


Zitat:[...]wieviele Zeilen gibt es denn in den von mir angesprochenen Versionen?

Du hast es ja selbst rot eingerahmt. Da steigt Integer einfach aus.

danke. Ich habe die 32Tsd und Zerquetschte nicht mit Zeilen in Verbindung gebracht. Blush
Moin!  :19:
Zitat:Ich habe das aus einem schlauen Buch, weil Microsoft mich leider nicht über die Schulter schauen läßt

Dann schauen wir MS doch mal in die Karten:
Lasst mal folgendes vollkommen sinnbefreite Makro laufen.
Sub Quatsch()
Dim Start As Double
Dim i As Integer, j As Integer, k As Long, l As Integer
Dim x As Long, y As Long, z As Long
Start = Timer
'long-Variable k wird 3276600mal mit Integer-Wert gefüllt 
For i = 1 To 100
   For j = 1 To 32766
      k = j
   Next j
Next i
Debug.Print "Integer to Long: " & Timer - Start
Start = Timer
'Integer-Variable l wird 3276600mal mit Integer-Wert gefüllt 
For i = 1 To 100
   For j = 1 To 32766
      l = j
   Next j
Next i
Debug.Print "Integer to Integer: " & Timer - Start
Start = Timer
'Long-Variable z wird 3276600mal mit Long-Wert gefüllt 
For x = 1 To 100
   For y = 1 To 32766
      z = y
   Next y
Next x
Debug.Print "Long to Long: " & Timer - Start
End Sub
Direktfenster meiner alten Möhre schrieb:Integer to Long: 0,19140625
Integer to Integer: 0,1484375
Long to Long: 0,140625
Wie man sieht, dauert die Konvertierung zwischen zwei Datentypen ca. 30% länger als wenn man eine Typ-zu-Typ-Zuweisung macht.
In der Verarbeitungsgeschwindigkeit habe ich keine Differenz zwischen Long und Integer ausmachen können.

Gruß Ralf
Hallo Günter,

Zitat:danke. Ich habe die 32Tsd und Zerquetschte nicht mit Zeilen in Verbindung gebracht. 

das mit den Zeilen war ja auch nur ein, aber offenbar leicht verständliches, Beispiel.
Es ist mir auch völlig klar, daß das Longgedöhns und ähnliches bei den Formelmenschen
so gar nicht bis überhaupt gar nicht zum Tragen kommt.
Hallo zusammen,

ausgehend von diesem ursprünglichen Thread ( http://www.clever-excel-forum.de/thread-7527.html ) mache ich ein neues Thema auf, damit der Originalthread nicht unnötig mit nicht relevanten Beiträgen aufgebläht wird. Die bisher angefallenen Beiträge habe ich hierher verschoben.
Hi Ralf,

Zitat:Wie man sieht, dauert die Konvertierung zwischen zwei Datentypen ca. 30% länger als wenn man eine Typ-zu-Typ-Zuweisung macht.

In der Verarbeitungsgeschwindigkeit habe ich keine Differenz zwischen Long und Integer ausmachen können.

*vorsichtigkopfkratz* (damit ich mir keine Spreißl einziehe :32: )

Das sagt meine Direktauswertung, wobei ich nicht die Geschwindigkeit im allgemeinen meine, sondern die Konvertierung zwischen den unterstrichenen Datentypen:

[
Bild bitte so als Datei hochladen: Klick mich!
]



Hier ist doch lediglich INTEGER zu INTEGER schneller als die anderen. Huh
Hi Günter!
1. Finde ich richtig, dass dieser offtopic abgetrennt wurde.
2. Ich habe meinen Code noch nachträglich geändert (c&p-Teufelchen hatte zugeschlagen)
3. Wollen wir die PCs tauschen?  :21:
4. Bei 32.766.000 Durchläufen bei mir:
Zitat:Integer to Long: 1,609375

Integer to Integer: 1,4765625
Long to Long: 1,5546875

Einigen wir uns auf marginale Unterschiede?  :19:
Ich will damit auch sagen, dass manche Behauptungen (Geschwindigkeit, Speicherplatz) eher im homöopathischen Bereich Veränderungen bringen.
Ich nutze im übrigen häufig auch Variant, zumal dann, wenn ich keine Nachteile MESSEN kann.
(snb ist da so ein spezieller Guru, der verzichtet dreist auf Deklaration und nutzt somit grundsätzlich Variant, ist bei ihm aber egal, da sein Code extrem durchdacht ist)

Bis hierher erstmal genug;
Gruß Ralf
Seiten: 1 2