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

Fehler: CommandButton - mehrere Register markiert

Fehler: CommandButton - mehrere Register markiert
04.03.2003 23:20:36
Patrick
Hallo liebe Helfer,

ich habe folgendes Problem:

- Mein Excel-Datei besteht aus mehreren Tabellenblättern und jedes Tabellenblatt ist mit einem Blattschutz versehen.

- Den Blattschutz deaktiviere/aktiviere ich wie folgt:

Public Sub Prot()
ActiveSheet.Protect Password:="xxx"
End Sub

Public Sub Unprot()
ActiveSheet.Unprotect Password:="xxx"
End Sub

- Nun habe ich in jedem Tabellenblatt mehrere CommandButtons, die ein Makro auslösen (und funktioniert auch)

- Allerdings kommt es zu einem Programmabbruch, wenn mehrere Registerblätter makiert sind und ein CommandButton gedrückt wird.

1. Frage: Wie kann ich diesen Abbruch abfangen oder verhindern (Die Anzahl und der Namen der Registerblätter sind nicht festgelegt)

2. Frage: Wie kann ich CommandButtons programmieren, die das Makro nicht nur für dieses Tabellenblatt ablaufen lassen, sondern auch in den anderen Tabellenblättern (z. B. "Ausblenden von Spalten" durch Knopfdruck in einem Tabellenblatt soll in allen Tabellenblättern die Spalten ausgeblenden)



5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Fehler: CommandButton - mehrere Register markiert
05.03.2003 00:26:02
Klaus Schubert

Diesen Code in ein normales Modul kopieren und dann mit jedem beliebigen CommandButton verbinden (Blendet beim Aufruf die Spalten A bis C in ALLEN Blättern ein bzw. aus). Der Code Sheets(i).Select bewirkt in diesem Fall, das in jedem Fall nur ein Blatt ausgewählt ist:

Gruß Klaus

Re: Fehler: CommandButton - mehrere Register markiert
05.03.2003 10:42:11
Patrick

Hallo Klaus,

danke für deine schnelle Hilfe. Probiere gleich mal dein Script aus.

Gruß Patrick

Re: Fehler: CommandButton - mehrere Register markiert
05.03.2003 13:31:59
Patrick

Hallo Klaus,

dein Makro funktioniert hervorragend! Vielen Dank nochmal!

Ich hab' da allerdings noch 'ne Frage. Ich habe auch Buttons, die nur im aktivierten Tabellenblatt ihr Makro abspielen sollen (z. B. Einfügen einer Formel). Wenn ich dies nach deiner etwas umgeänderten Methode löse sieht das Ganze so aus.


1. Module für Blattschutz deaktivieren und aktivieren:

Sub BlattschutzDeaktivieren()
'
' Blattschutz deaktivieren
'
Dim i As Integer, BlattMerken As String
BlattMerken = ActiveSheet.Name
For i = 1 To Sheets.Count
Sheets(i).Select

ActiveSheet.Unprotect Password:="xxx" ' Blattschutz deaktivieren

Next i
Sheets(BlattMerken).Activate
End Sub


Sub BlattschutzAktivieren()
'
' Blattschutz aktivieren
'
Dim i As Integer, BlattMerken As String
BlattMerken = ActiveSheet.Name
For i = 1 To Sheets.Count
Sheets(i).Select

ActiveSheet.Protect Password:="xxx" ' Blattschutz aktivieren

Next i
Sheets(BlattMerken).Activate
End Sub


2. CommandButton

Public Sub CommandButton10_Click()
'
' Button: Vorschlag
'
Call BlattschutzDeaktivieren ' Blattschutz deaktivieren

ActiveSheet.Range("AF10:AF44").Formula = "=IF(RC[-1]="""","""",IF(RC[-1]<=1.5,1,IF(RC[-1]<=2.5,2,IF(RC[-1]<=3.5,3,IF(RC[-1]<=4.5,4,IF(RC[-1]<=5.5,5,6))))))"

Call BlattschutzAktivieren ' Blattschutz aktivieren
End Sub


Mit dieser Lösung spielt der Button sein Makro nur im Tabellenblatt ab und auch bei mehreren markierten Tabellenblättern gibt es keine Fehlermeldung, allerdings dauert es bei 20 Tabellenblättern ziemlich lange bis bei jedem Tabellenblatt der Schutz aufgehoben ist.

Frage: Gibt es für Buttons (die nur in ihrem Tabellenblatt funktionieren sollen) eine andere Möglichkeit des Schutzes vor einer Fehlermeldung, wenn ein Anwender mehrere
Tabellenblätter markiert hat und den Button drückt.

Anzeige
Re: Fehler: CommandButton - mehrere Register markiert
05.03.2003 17:12:30
Klaus Schubert

Für einzelne Sheets nimm besser diesen Code:


Der ansonsten verpönte Select-Befehl bewirkt in diesem Fall, das ein eindeutiges Tabellenblatt ausgewählt wird, was nötig ist, um den Blattschutz zu aktivieren/deaktivieren.
Bei einer Mehrfachauswahl ist dies nicht eindeutig, weshalb die Fehlermeldung ausgegeben wird. Die Mehrfachauswahl wird aber durch den Select-Befehl aufgehoben, so dass die Fehlermeldung ausbleibt.
Um allgemein Fehler zu unterdrücken, benutze folgenden Code:

On Error Resume Next

Vor dem fehlerverursachenden Code einfügen, allerdings wird der Blattschutz im folgenden Beispiel aber dann nicht gesetzt, falls ein Fehler auftritt:

Public Sub Prot()
On Error Resume Next
ActiveSheet.Protect Password:="xxx"
End With
End Sub

Gruß Klaus

Anzeige
Re: Fehler: CommandButton - mehrere Register markiert
05.03.2003 20:02:12
Patrick

Hallo Klaus,

vielen Dank für deine Hilfe. Bin mir sicher deine Tipps klappen immer. Warst mir eine große Hilfe :-).

Gruß Patrick

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige