Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
640to644
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
640to644
640to644
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Select und Activat

Select und Activat
22.07.2005 08:46:09
philipp
Hallo,
ich bin ein bisschen Ducheinander.
Hier taucht öfters die Behauptung auf, dass man Select oder Activate aus Performance-Gründen meiden sollte.
Naja, das habe ich dann auch versucht und manchmal funktioniert das auch. Aber manachmal auch nicht. Hier ein Beispiel:
'funktioniert einwandfrei
Sheets(tabelle).Select
Range("A2").Select
'es Erscheint ein Debugfehler "Laufzeit 1004"
Sheets(tabelle).Range("A2").Select
Warum?
Denn das hier funktioniert einwandfrei.
'feiertage ist hier eine Variable in der ein Datum hinterlegt ist
feiertag = Sheets("Feiertage").Range("A" & i).Value
Kann es sein, dass VBA manchmal ziemlich willkürlich entscheidet, was in Ordnung ist und was nicht?
mfg philipp

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Select und Activat
22.07.2005 08:55:19
Sylvio
Hallo philipp,
'es Erscheint ein Debugfehler "Laufzeit 1004"
Sheets(tabelle).Range("A2").Select
er muss ja wissen in welchem Workbbook in diesem fall das Aktive und da die Zelle A1 Wert zuweisen "hallo"
ActiveWorkbook.Sheets("Tabelle1").Cells(1, 1).Value = "Hallo"
ich seh das wie Hajo_Zi in 98% der Fälle Select einfach weglassen
Gruß Sylvio
Auch mit Workbook gibts Probleme
22.07.2005 09:00:07
philipp
Hm, aber warum funktioniert dann das hier auch nicht;
ActiveWorkbook.Sheets(tabelle).Range("A2").Select
grup Philipp
AW: Auch mit Workbook gibts Probleme
22.07.2005 09:09:51
Sylvio
Hallo
ActiveWorkbook.Sheets(tabelle).Range("A2").Select
wenn du es so wie du schreibst muss du aber vorher gesagt haben
Dim Tabelle as String
Tabelle ="Tabelle1"
oder besser so:
ActiveWorkbook.Sheets("Tabelle1").Range("A2").Select
Gruß Sylvio
Anzeige
tabelle ist eine Variable
22.07.2005 09:20:35
philipp
Ups,
das habe ich vergessen zu erklären
tabelle steht hier in dem Fall, da es für ein For-Next-Schleife definiert wurde für die Zahlen 1 bis 37. Tabelle ist also eine Variabel die nacheinander geöffnet wurde
Sieht wenn man mal die anderen im Moment unwichtigen Dinge rausnimmt so aus:
Und das funktioniert nicht!
Dim tabelle As Integer
For tabelle = 1 To 37 Step 1
ActiveWorkbook.Sheets(tabelle).Range("A2").Select
Next tabelle
Aber das hier funktioniert:
Dim tabelle As Integer
For tabelle = 1 To 37 Step 1
ActiveWorkbook.Sheets(tabelle).Select
Range("A2").Select
Next tabelle
Und das wundert mich eben. Warum muss ich den die Tabelle immer Extra selektieren. Das ist bei mir schon so oft passiert, dass ich mittlerweile immer wenn eine neue Tabelle geöffnet wird, sie erst mit Select öffne, einfach um diesen blöden Laufzeitfehler 1004 zu vermeiden
Anzeige
AW: tabelle ist eine Variable
22.07.2005 09:51:43
Sylvio
ja das kenn ich von schleifen
da geht es noch so auch ohne select wie gesagt select weglassen

Sub test()
Dim i As Integer
Dim a As Range
For i = 1 To 3
Set a = ActiveWorkbook.Sheets(i).Range("A2")
a = "test" & i
Next i
Set a = Nothing
End Sub

Gruß Sylvio
und das steigert die Performance?
22.07.2005 10:12:00
philipp
Danke für den Tipp.
Aber steigert das wirklich die Performace?
Ich meine das sind doch immerhin 2 Codezeilen mehr als bei der Selectvariante.
Läuft der Code dan doch noch schneller? Oder wäre es hier dann doch sinnvoller Select zu benutzen?
gruß philipp
AW: und das steigert die Performance?
22.07.2005 10:21:14
Sylvio
Du kannst es auch so schreiben hauptsache KEIN select lass es einfach weg
mann brauch den select rotz nicht kostet nur rechnerleistung
For i = 1 To 3
ActiveWorkbook.Sheets(i).Range("A2") = "test"
Next i
falls du Otion explicit nutzt musst du noch zusätzlich i as Integer definieren
Gruß Sylvio
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige