Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
920to924
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
920to924
920to924
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Verständnis zu Select & Co

Verständnis zu Select & Co
05.11.2007 10:50:00
Thomas
Hallo ihr VBA Profis.
Seit ich in diesem Forum regelmäßig mitlese fällt mir immer wieder auf, dass man auf Select verzichten sollte, wenn es geht. Bei der Suche nach Gründen hab ich bisher nur Antworten gefunden, die auf Zeit und Bildschirmflackern hinweisen. Das Flackern kann man ja abschalten und die Zeit ist für mich nicht spürbar größer wenn ich Select verwende. Allerdings hab ich auch ein sehr schnelles System, wie es nun auf langsameren Rechnern aussieht weiß ich nicht. Ich gebe mir seit diesen Hinweisen (ich nehme sowas ja ernst, will mich ja weiterentwickeln) auch immer Mühe auf Select oder Activate zu verzichten, aber immer klappt das nicht. Da reichen wohl auch meine Kentnisse noch lange nicht aus.
So, nun zur Frage, gibt es außer den oben benannten Gründen noch weitere gute Gründe auf Select & Co zu verzichten?
Vielen Dank, Thomas

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Verständnis zu Select & Co
05.11.2007 11:07:32
Andi
Hi,
zum einen wird der Code kürzer und wesentlich übersichtlicher, wenn Du zB statt
Sheets(1).Activate
Range("A1").Select
Selection.Value = "hallo"
einfach
Sheets(1).Range("A1").Value = "Hallo"
schreibst.
Zum anderen merkt man schon einen Performance-Unterschied, wenn man zB Listen mit ein paar 1000 Zeilen bearbeitet, oder so.
Schönen Gruß,
Andi

AW: Verständnis zu Select & Co
05.11.2007 11:12:16
Thorsten
Ich weiss nicht genau was du mit Bildschirm flackern meinst. Wenn deine Tabelle 100 Einträge besitzt und alle löschst, dann kannst du "evtl" seehn, wie die Zeilen Flackern.
bei 50.000 Datensätzen dauert solch ein Vorgang teilweise schon Minuten, wenn im Hintergrund noch berechnungen statt finden.
wenn du folgende Zeilen einbindest, ist in manchen Vorgängen die Ausführung zwischen gleich schnell oder in großen Tabellen VIIIIEEELLL schneller:
vor dem ausführbaren Code:
Application.ScreenUpdating = false
nach dem ausführbaren Code:
Application.ScreenUpdating = True
activate kann probleme machen: wenn du z.B. eine Zelle kopierst und an einer anderen Stelle einfügst und "automatisch" ein Makro mit activate ausführst, verlierst du deine Markierte Zelle.
Das waren meine Probleme mit dem activate...
ansonsten hab ich keine Probleme

Anzeige
AW: Verständnis zu Select & Co
05.11.2007 11:28:47
Thomas
Hallo Thorsten,
Das meinte ich mit Bildschirmflackern abschalten:
'vor dem ausführbaren Code:
Application.ScreenUpdating = false
nach dem ausführbaren Code:
Application.ScreenUpdating = True'
Soweit ist es klar. Wie gesagt, ich benutze auch hin und wieder mal Select. In manchen Beiträgen wird ein Makro vorgestellt wo einmal select vorkommt und schon kommen Antworten das man drauf verzichten sollte. Deshalb wollte ich wissen wieso. Bei 50000 Zeilen ist mir das auch klar, da sollte man dringend anders vorgehen. Auch das mit Sicherheit bewußt so extrem gewählte Beispiel von Andi ist mir klar. Aber warum wird wegen einem Select gleich der Zeigefinger gehoben? Dachte da steckt mehr dahinter. Klar, wenn man seine active Zelle halten muß, dann kann man auch kein Select verwenden.
Sollte jemand dabei sein, der meint generell auf Select zu verzichten (es sei den es geht nicht anders), würde ich mich über die Begrundung freuen.
Danke erstmal Andi und Thorsten, Tschüß Thomas

Anzeige
AW: Verständnis zu Select & Co
05.11.2007 11:38:30
Andi
Hi,
ein einzelnes, versprengtes Select hat noch niemanden umgebracht... ;-)
Der Punkt ist der, dass hier viele Fragen von Leuten kommen, die gerade anfangen, sich mit VBA zu beschäftigen. Diese haben dann entweder ein Buch vor sich liegen, in dem es von Selects und Activates nur so wimmelt, oder arbeiten viel mit dem Rekorder, der naturgemäß haufenweise Select im Code hat.
In einem 10-zeiligen Code isses nahezu wurscht, ob mit oder ohne Select gearbeitet wird. Aber irgendwann programmieren diese Anfänger vielleicht auch größere Projekte; und wenn Du mal nen Fehler gesucht hast in einem Projekt mit einigen hundert oder mehr Zeilen, dann lernst Du eine stringente Programmierung, die auf unnötige Zeilen verzichtet, schnell schätzen.
Und weil es normalerweise einfacher ist, sich etwas gar nicht erst an-, anstatt später abzugewöhnen, kommt hier eben gerne der Hinweis, dass Select und Activate sogut wie immer vermieden werden kann.
Dieser Hinweis ist ja nie bös gemeint, jedenfalls hab ich das bisher noch nicht mitbekommen. Es empfiehlt sich halt einfach, beim Erlernen einer Programmiersprache von Anfang an auf einen sauberen Stil zu achten.
Schönen Gruß,
Andi

Anzeige
Danke Andi
05.11.2007 11:51:06
Thomas
das war sehr gut erklärt. Als böse hatte ich das ja auch nicht aufgefasst, wollte halt nur mal die Bedeutung wissen. Mit Deiner Erklärung kann ich sehr gut umgehen. Wie gesagt, ich will mich ja auch weiterentwickeln und da kommen halt auch mal Fragen wie "Warum ist das so Wichtig?". Auch das mit den Option Explicit mußte ich erst verstehen lernen, weil wenn Excel dahingehend nicht so eingestellt wurde, war es egal ob eine Variable nun festgelegt wurde oder nicht. Aber das habe ich selbst bitter erlernen müssen, das es zwar bei mir egal sein kann, aber auf anderen Rechnern dann Probleme gibt.
Auch ich hab mit dem Recorder begonnen, der wirklich viel Select benutzt. Als Ansatz ist das aber immer recht hilfreich. Wie gesagt, ich versuche jetzt auch immer auf Select zu verzichten, nur es gelingt mir nicht immer. Schön das man sich dafür nicht "schämen" muß ;o).
Tschüß Thomas

Anzeige
AW: Danke Andi
05.11.2007 20:14:00
Daniel
Hi
alle wichtigen Antworten rund um das Thema SELECT findest du hier:
http://www.online-excel.de/excel/singsel_vba.php?f=78
in den meisten Fällen lässt sich das vom Recorder aufgezeichnete Select ja rech einfach nachträglich löschen.
Gruß, Daniel

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige