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

Optimierung von VBA-Befehlen

Optimierung von VBA-Befehlen
26.02.2007 13:01:00
VBA-Befehlen
Hallo,
ich möchte unten stehende Befehle optimieren.
versucht habe ich
Dim i As Integer

Sub optimieren()
For i = 1 to 10
Tabelle& i.Protect
Next
End Sub

hier bekomme ich jedoch einen Fehler (ungültiger Bezeichner). Mit Klammern und Ausrufezeichen bin ich auch nicht weitergekommen.
Kann mir jemand helfen?
Vielen Dank.
Gruß
Uwe
Tabelle1.Select
Tabelle1.Protect
Tabelle2.Select
Tabelle2.Protect
Tabelle3.Select
Tabelle3.Protect
Tabelle4.Select
Tabelle4.Protect
Tabelle5.Select
Tabelle5.Protect
Tabelle6.Select
Tabelle6.Protect
Tabelle7.Select
Tabelle7.Protect
Tabelle8.Select
Tabelle8.Protect
Tabelle9.Select
Tabelle9.Protect
Tabelle10.Select
Tabelle10.Protect

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Optimierung von VBA-Befehlen
26.02.2007 13:06:12
VBA-Befehlen
Hallo Uwe,
schreibe statt 'Tabelle&i' 'Sheets(i)'
Gruß
Bertram
AW: Optimierung von VBA-Befehlen
26.02.2007 13:07:00
VBA-Befehlen
For i = 1 To 10
Sheets(i).Protect
Next
AW: Optimierung von VBA-Befehlen
26.02.2007 13:09:29
VBA-Befehlen
Hallo,

Sub optimieren()
For i = 1 to 10
Sheets(i).Protect
Next
End Sub

Grüße
Hoffi
AW: Optimierung von VBA-Befehlen
26.02.2007 15:00:16
VBA-Befehlen
Hallo,
vielen Dank an alle für die Hilfe. Ich bitte um Verständnis, dass ich nicht jedem meinen Dank ausspreche.
Ich habe dennoch eine weitere Frage:
Wie muss ich den Code anpassen, wenn es die Tabellen 1-10 und 14-23 betrifft?
For i = 1 To 10 , oder ; oder & 14 to 23 funktioniert nicht.
Vielleicht könnt Ihr mir diesbezüglich auch noch weiterhelfen.
Gruß
Uwe
Anzeige
AW: Optimierung von VBA-Befehlen
26.02.2007 15:28:00
VBA-Befehlen
Hallo Uwe,
entweder machst du 2 Schleifen hintereinander oder (ungetestet)

Sub optimieren()
Dim ws As Worksheet
For Each ws In ActiveWorkbook.Sheets
Select Case ws.Index
Case 1 To 10, 14 To 23
ws(ws.Index).Protect
End Select
Next ws
End Sub

Gruß
Bertram
AW: Optimierung von VBA-Befehlen
26.02.2007 15:33:55
VBA-Befehlen
Hallo Bertram,
deine 2. Version funktioniert leider nicht. Ich werde dann einfach eine 2. Schleife einbauen. Ich habe gedacht, dass es evtl. auch anders geht.
Vielen Dank nochmals.
Gruß
Uwe
AW: Optimierung von VBA-Befehlen
26.02.2007 15:41:20
VBA-Befehlen
Hallo Uwe,
sorry, mein Fehler. Es muss natürlich
Sheets(ws.Index).Protect
anstatt ws(ws.Index).Protect heißen.
Gruß
Bertram
Anzeige
AW: Optimierung von VBA-Befehlen
26.02.2007 16:24:00
VBA-Befehlen
Hallo Bertram,
vielen Dank. Hast du ggf. auch einen Tipp für den folgenden Befehl? Hierbei wieder Tabelle1-10 und 14-23
Sheets(Array("Tabelle1", "Tabelle2", "Tabelle3", "Tabelle4", "Tabelle5", "Tabelle6", "Tabelle7", "Tabelle8", "Tabelle9", "Tabelle10")).Select
Mein Versuch, jedoch vergebens:

Sub markieren()
Dim ws As Worksheet
For Each ws In ActiveWorkbook.Sheets
Select Case ws.Index
Case 1 To 10, 14 To 23
Sheets(Array(ws.Index)).Select
Sheets(ws.Index).Protect
End Select
Next ws
End Sub

Hier markiert er jedoch nicht alle, sondern immer nur eine. Außerdem fängt er nicht mit Tabelle1, sondern mit dem rechtesten Tabellenblatt an.
Sorry, aber ich fange gerade erst mit VBA an und habe noch meine Probleme.
Gruß
Uwe
Anzeige
AW: Optimierung von VBA-Befehlen
26.02.2007 16:45:35
VBA-Befehlen
Hallo Uwe,
mal generell:
Sheets(1) und Sheets("Tabelle1") sind nicht zwingend das selbe:
Sheets(1) spricht immer das 1. Tabellenblatt von links an, egal wie es heißt.
Sheets("Tabelle1") spricht immer das Blatt mit dem Namen "Tabelle1" an egal an welcher Position es sich befindet.
Desweitern solltest du auf unnötiges selektieren verzichten. 'Select' ist nur in wenigen Ausnahmen von Nöten.
Was dein Problem angeht, verstehe ich leider nicht was du machen willst:-(
Gruß
Bertram
AW: Optimierung von VBA-Befehlen
26.02.2007 17:00:00
VBA-Befehlen
Hallo Bertram,
ich habe mehrere Tabellenblätter (z.B. Tabelle1 bis Tabelle 10 und 14-23). Die Namen der Tabellenblätter sind variabel, daher auch nicht die Bezeichnung "Tabelle1" bis "Tabelle10", etc.)
Die wesentlichen Inhalte und Formate sind identisch. Sollen Inhalte insgesamt zurückgesetzt werden (um z.B. ein leeres Formular zum ausfüllen zu hinterlassen), soll z.B. die Zelle A5 in jedem definierten (markierten) Tabellenblatt überschrieben/ zurückgesetzt/ in den Ursprungszustand oder was auch immer werden. Daher der Befehl
Sheets(Array("Tabelle1", "Tabelle2", "Tabelle3", "Tabelle4", "Tabelle5", "Tabelle6", "Tabelle7", "Tabelle8", "Tabelle9", "Tabelle10")).Select
Danach erfolgen weitere Befehle, die für jedes Tabellenblatt identisch sind.
Ich hoffe, dass es ein wenig verständlicher geworden ist, was ich vorhabe.
Ich brauche also ein Befehl, der obige Tabellenblätter markiert. da ich nun weitere Tabellenblätter hinzufügen möchte, will ich gerne ein wenig optimieren, um auch spätere Erweiterungen schneller anpassen zu können.
Gruß
Uwe
Anzeige
AW: Optimierung von VBA-Befehlen
26.02.2007 18:48:00
VBA-Befehlen
Hallo
in diesem Fall würde ich auf jedem Tabellenblatt, auf dem Das Makro ausgeführt werden soll, eine kleine Markierung setzen, (beispielweise ein "x" in Zelle A1). Dann würde ich eine Schleife über alle Tabellenblätter machen und dabei auf dieses Merkmal prüfen.
Das hätte den Vorteil, daß wenn du neue Tabellenblätter hinzufügst, du deinen Code nicht ändern mußt, sondern nur den Merker in Zelle A1 setzen oder weglassen brauchst.
Der Code dafür würde dann so aussehen:

Sub Test()
Dim sh as worksheet
for each sh in activeworkbook.sheets
if sh.Range("A1").value = "x" then
'hier deinen Code einfügen
end if
next
End Sub

Gruß, Daniel
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige