Anzeige
Archiv - Navigation
544to548
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
544to548
544to548
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

VBA-Code optimieren

VBA-Code optimieren
11.01.2005 19:13:47
Torsten
Nochmals Hallo,
wie kann ich folgenden Code optimieren (es handelt sich ingesamt um 9 Sheets):
With Sheets("1")
.Unprotect password:="maze"
.Cells.Copy
.Cells.PasteSpecial Paste:=xlValues
.Protect password:="maze"
End With
With Sheets("2")
.Unprotect password:="maze"
.Cells.Copy
.Cells.PasteSpecial Paste:=xlValues
.Protect password:="maze"
End With
With Sheets("3")
.Unprotect password:="maze"
.Cells.Copy
.Cells.PasteSpecial Paste:=xlValues
.Protect password:="maze"
End With
.....
Vielen Dank für Eure Tips.
Gruß
Torsten

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA-Code optimieren
Ulf
Option Explicit

Sub alle_9()
Dim B As Byte
For B = 1 To 9
With Sheets(B)
.Unprotect Password:="maze"
.Cells.Copy
.Cells.PasteSpecial Paste:=xlValues
.Protect Password:="maze"
End With
Next
End Sub

Ulf
AW: VBA-Code optimieren
Torsten
Hallo Ulf,
vielen Dank für Deine Rückmeldung.
Leider macht Excel bei den Sheets 8 und 9 nicht das, was im Code hinterlegt ist.
Statt die darin enthaltenen Formeln zu kopieren und durch Werte zu ersetzen, steht nachher überall ein Bezugs-Fehler drin. Zunächst dachte ich, es läge vielleicht an der Deklaration der Variablen "Byte", aber auch nach Änderung auf Integer bleibt's bei dem Fehler. Dann habe ich den Zähler zurückgesetzt auf For B = 1 To 7 was dazu geführt hat, daß die Sheets 6 und 7 diesen Fehler aufwiesen.
Hast Du noch eine Idee?
Gruß
Torsten
P.S.:
Ich verlasse jetzt mein Büro, und melde mich dann morgen auf eine evtl. Rückmeldung von Dir. Schönen Abend noch.
Anzeige
AW: VBA-Code optimieren
Ulf

Sub alle_9()
Dim B As Byte
For B = 1 To 9
With Sheets(Cstr(B))
.Unprotect Password:="maze"
.Cells.Copy
.Cells.PasteSpecial Paste:=xlValues
.Protect Password:="maze"
End With
Next
End Sub

Generell ist es keine gute Idee die Blätter derart zu benennen, da es zum Konflikt mit dem Index kommen kann, wie wohl in diesem Fall.
Ulf
AW: erledigt - mT
Torsten
Hallo Ulf,
prima, mit der Ergänzung läuft's jetzt.
Deinen Hinweis mit der Benennung der Sheets werde ich zukünftig berücksichtigen.
Nochmals vielen Dank für Deine Hilfe.
Gruß
Torsten
AW: VBA-Code optimieren
Ramses
Hallo
Probier mal
Dim i As Integer
For i = 1 to 9
With Sheets("" & i & "")
.Unprotect password:="maze"
.Cells.Copy
.Cells.PasteSpecial Paste:=xlValues
.Protect password:="maze"
End With
Next i
Gruss Rainer
Anzeige
AW: VBA-Code optimieren
Torsten
Hallo Rainer,
vielen Dank für Deine Rückmeldung.
Excel bleibt allerdings hängen mit der Meldung:
"Index außerhalb des gültigen Bereichs" und zwar an der Stelle:
With Sheets("" & i & "")
Hast Du eine Idee, warum?
Gruß
Torsten
AW: VBA-Code optimieren
Ramses
Hallo
dein heissen deine Mappen nicht so !
Du hast in deiner Frage geschrieben
With Sheets("1")
Also bin ich davon ausgegangen, dass
A) dein Makro funktioniert
B) Die Mappen statt Zahlen Namen haben
Das Makro von mir funktioniert und wurde getestet.
Alternativ kannst du die Variante von Ulf probieren, die sollte dann funktionieren
Gruss Rainer
Anzeige
AW: VBA-Code optimieren
Torsten
Hallo Rainer,
offensichtlich habe ich mich dann nicht ordentlich ausgedrückt - sorry.
Ulf's Lösung hat mir weitergeholfen.
Schönen Dank für Deine Rückmeldungen.
Gruß
Torsten

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige