| | | Design Eines Nanosatelliten Für Ein Biologisches Experiment Mit Hilfe Maßgeschneiderter Herstellungsverfahren, ein Anwenderbericht |
Autor
|
Thema: Excel VBA: Cells(Z, S) vs Range(SZ) bzw.Range(S1Z1:S2Z2) vs [SZ] bzw.[S1Z1:S2Z2] (350 / mal gelesen)
|
ArCADe-Spieler Mitglied Metallbautechniker
Beiträge: 367 Registriert: 05.12.2012 Win 10 64bit Office 365 aber Excel 2019
|
erstellt am: 16. Jan. 2024 09:50 <-- editieren / zitieren --> Unities abgeben:
Hallo Gemeinde, gleich vorab: mangels einer Idee, wonach ich suchen sollte bzw. einem kurzen, prägnanten Suchstring, habe ich weder die Forums-Suche noch Google/Startpage zu diesem Thema bemüht ... es ist also sinnlos mir das zu "empfehlen", wenn nicht ein verwendbarer Suchstring mitgeliefert wird Zell- bzw. Bereichsbezüge können - meines Wissens - auf drei unterschiedliche Arten geschrieben werden: 1. Cells(Zeile, Spalte) bzw. Range(Cells(Zeile1, Spalte1):Cells(Zeile2, Spalte2)) 2. Range("SpalteZeile") bzw. Range("Spalte1Zeile1:Spalte2Zeile2") 3. [SpalteZeile] bzw. [Spalte1Zeile1:Spalte2Zeile2] Und eigentlich(!) sollten diese drei Schreibweisen - wieder nur meines Wissens - gleichwertig sein / verwendet werden können. In der letzten Zeit habe ich - wegen der deutlich kürzeren Schreibweise - vermehrt die letzte Variante verwendet, und nun habe ich den Eindruck, dass dadurch manchmal(!!!) die Abarbeitung extrem ausgebremst wird, bis hin zum völligen Einfrieren oder sogar dem Absturz von Excel. Manchmal funktioniert es jedoch auch einfach und flott. Hat jemand Infos dazu? Oder einen Tipp, wo bzw. wonach man suchen sollte? Oder ob es bestimmte Verfahren gibt, bei denen diese Kurzschreibweise explizit nicht verwendet werden darf / sollte? Bin für jeden Hinweis dankbar. Grüße Gernot [Diese Nachricht wurde von ArCADe-Spieler am 16. Jan. 2024 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
KlaK Ehrenmitglied V.I.P. h.c. Dipl. Ing. Vermessung, CAD- und Netz-Admin
Beiträge: 2782 Registriert: 02.05.2006 Office 2010; Office365 Visual Basic
|
erstellt am: 16. Jan. 2024 10:23 <-- editieren / zitieren --> Unities abgeben: Nur für ArCADe-Spieler
Hallo Gernot, Eigentlich sollten die verschiedenen Zellbezüge gleichwertig sein, wobei ich eigentlich nie die von dir bevorzugte Kurzschreibweise benutzt habe. Du bist Dir sicher dass es hier nicht an anderen Ursachen liegen kann? Nicht geöffnete Arbeitsmappen, Zugriff auf bestimmte Pfade, fehlerhafte Formeln. Gerade bei VBA ist ja ein häufiger Fehler, dass mit "On Error Resume Next" nicht absehbare Fehler entstehen können (z.B. bei Division durch Null oder fehlenden Bezügen). Zur Suchabfrage: Probiere es mal mit excel vba Zellenbezug langsam, da gibt es ein paar nette Artikel. Grüße Klaus
[Diese Nachricht wurde von KlaK am 16. Jan. 2024 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ArCADe-Spieler Mitglied Metallbautechniker
Beiträge: 367 Registriert: 05.12.2012 Win 10 64bit Office 365 aber Excel 2019
|
erstellt am: 16. Jan. 2024 11:51 <-- editieren / zitieren --> Unities abgeben:
Hallo Klaus, von all den von Dir aufgeführten Fehlerquellen kämen tatsächlich nur die fehlerhaften Formeln in Frage, da ich das geöffnet-sein der einzigen anderen notwendigen Mappe bereits beim Öffnen der aktuell betroffenen Mappe per Makro sicherstelle und sonst auf keine anderen Dateien zugreife. Fehlerbekämpfung à la "On Error Resume Next" ist mir ein Graus, weil man da halt keinerlei Rückmeldung über den tatsächlich aufgetretenen Fehler erhält, sondern einfach mit den fehlerbehafteten Daten weitergewurschtelt wird. Ich versuche daher immer alle denkbaren Fehler direkt und benannt abzufangen ... oder andernfalls wirklich anzuhalten. Wie gesagt: das "nur langsame" Abarbeiten der einzelnen Makros, die ich (teilweise) auf diese Kurzschreibweise umgestellt habe, ist noch die harmlose Variante. Und was mich schier verzweifeln lässt: öffne ich nach einem Einfrieren+Kill per Taskmanager oder dem komplett-Absturz von Excel genau die selben beiden Dateien (nicht etwa die automatischen Sicherungsdateien), funktioniert es meistens problemlos und flott. Gestern hatte ich tatsächlich zum ersten Mal eine Excel-Fehlermeldung 1004 mit anschließendem Debugging-Angebot, das mich auf eine Zeile mit zwei solchen Kurzschreibweisen geführt hat ... inzwischen habe ich diese Zeile (und etliche andere auch) wieder auf Cells(...) zurückgeändert und es funktioniert - zumindest dort - wieder völlig problemlos. Vergleiche ich allerdings ältere, funktionierende Versionen dieser Dateien, die komplett in Cells- oder langer Range-Schreibweise geschrieben sind, wirklich Zeile für Zeile mit der aktuellen Version mit (teilweiser) Verwendung der Kurzschreibweise, sind die Formeln - bis auf die Zellbezugs-Schreibweise - gleich. Wahrscheinlich werde ich doch alles wieder auf die alte, lange Schreibweise zurückändern - bessere Übersicht über den Prorammcode nützt mir letztendlich gar nichts, wenn das Programm dadurch fehleranfälliger wird bzw. gar nicht mehr funktioniert. Mittels Deines Suchstrings stoße ich zwar auf etliche durchaus interessante Seiten, von denen allerdings wirklich keine auf die Funktionalitäts- bzw. Abarbeitungs-Unterschiede der verschiedenen Schreibweisen für Zellbezüge eingeht. Grüße Gernot Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
KlaK Ehrenmitglied V.I.P. h.c. Dipl. Ing. Vermessung, CAD- und Netz-Admin
Beiträge: 2782 Registriert: 02.05.2006 Office 2010; Office365 Visual Basic
|
erstellt am: 16. Jan. 2024 13:31 <-- editieren / zitieren --> Unities abgeben: Nur für ArCADe-Spieler
Hallo Gernot, Ja, ist schwierig solche Fehler nachzuvollziehen wenn sie bei einem selber noch nicht aufgetaucht sind. Was mir noch aufgefallen ist, Du hast bei Systeminfo "Office 365 aber Excel 2019", gibt es dafür einen Grund? Bei einigen PC haben wir auch beides, Office 365 und Office 2010 installiert da wir uns für Angestellte, die nur selten im Büro sind und kein Teams benötigen, das monatliche Geld sparen. Gelegentlich gibt es hier auch Probleme bei Excelmakros, die auf reinen M365-PCs nie vorkommen. Grüße Klaus Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ArCADe-Spieler Mitglied Metallbautechniker
Beiträge: 367 Registriert: 05.12.2012 Win 10 64bit Office 365 aber Excel 2019
|
erstellt am: 16. Jan. 2024 14:16 <-- editieren / zitieren --> Unities abgeben:
Hallo Klaus, zum Thema MS Office 365 + Excel 2019 muss ich erst einmal in unserer IT-Abteilung nachbohren ... und weiß tatsächlich nicht, warum diese Installationskombi gewählt wurde. Mit Deinem Suchstring fand ich dies: Warum reagiert mein Excel-Makro so langsam, wenn think-cell aktiviert ist?, was für mich erneut - auch wenn es sich eben nicht mit der unterschiedlichen Zellbezugs-Schreibweise befasst - darauf hinweist, dass Select in VBA-Programmen tunlichst vermieden werden sollte ... allerdings hilft mir das dort gegebene Beispiel bei meinen Verwendungen von Select nicht wirklich weiter ... z.B. hier. Mit dem Suchstring "Excel VBA Unterschied Cells(Z,S) und [SZ]" bin ich hierüber gestolpert: Range vs. Cells | HERBERS Excel Forum, woraus ich den Schluss ziehe, aus z.B. Range("A1").Select zumindest Cells(1,1).Select zu machen ... alles hilft ... und wenn ich mit den Infos von der Seite dann noch bedenke, dass [A1].Select Excel-intern wahrscheinlich erst zur Range-Schreibweise und dann erst als Cells interpretiert werden muss ... hm, so langsam verstehe ich bei den Unmengen an Zellzugriffen, dass die Makros dadurch immer langsamer wurden. Grüße Gernot [Diese Nachricht wurde von ArCADe-Spieler am 07. Mai. 2024 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
KlaK Ehrenmitglied V.I.P. h.c. Dipl. Ing. Vermessung, CAD- und Netz-Admin
Beiträge: 2782 Registriert: 02.05.2006 Office 2010; Office365 Visual Basic
|
erstellt am: 16. Jan. 2024 16:02 <-- editieren / zitieren --> Unities abgeben: Nur für ArCADe-Spieler
Hallo Gernot, Interessante Links, war mir gar nicht bewußt dass [A1] und Range("A1") auch intern zu cells(1,1) umgeformt werden. Da verwende ich ja unbewußt immer das schnellste Format (cells). Hatte Dir ja schon mal geschrieben, das ich select eigentlich nie verwende. Warum das in Deinem Programm nicht funktioniert hat ist mir immer noch schleierhaft. Grüße Klaus Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|