Registriert seit: 04.03.2015
Version(en): 2000 + meist 2010
04.12.2016, 16:30
(Dieser Beitrag wurde zuletzt bearbeitet: 04.12.2016, 16:30 von lupo1.)
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.
Registriert seit: 11.04.2014
Version(en): '97 bis 2016; 365
04.12.2016, 18:02
(Dieser Beitrag wurde zuletzt bearbeitet: 04.12.2016, 18:02 von Käpt'n Blaubär.)
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.
Registriert seit: 10.04.2014
Version(en): Microsoft 365, mtl. Kanal
04.12.2016, 18:23
(Dieser Beitrag wurde zuletzt bearbeitet: 04.12.2016, 18:23 von WillWissen.)
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!! 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?
Gruß Günter Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen. angebl. von Georg Christoph Lichtenberg (1742-1799)
Registriert seit: 11.04.2014
Version(en): '97 bis 2016; 365
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.
Registriert seit: 10.04.2014
Version(en): Microsoft 365, mtl. Kanal
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.
Gruß Günter Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen. angebl. von Georg Christoph Lichtenberg (1742-1799)
Registriert seit: 12.10.2014
Version(en): 365 Insider (32 Bit)
04.12.2016, 18:45
(Dieser Beitrag wurde zuletzt bearbeitet: 04.12.2016, 18:46 von RPP63.
Bearbeitungsgrund: Codefehler beseitigt
)
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
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)
Registriert seit: 11.04.2014
Version(en): '97 bis 2016; 365
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.
Registriert seit: 10.04.2014
Version(en): Microsoft 365, mtl. Kanal
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.
Gruß Günter Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen. angebl. von Georg Christoph Lichtenberg (1742-1799)
Registriert seit: 10.04.2014
Version(en): Microsoft 365, mtl. Kanal
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.
Gruß Günter Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen. angebl. von Georg Christoph Lichtenberg (1742-1799)
Registriert seit: 12.10.2014
Version(en): 365 Insider (32 Bit)
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
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)
|