Alle Tabellenblätter schützen

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

mike6
*****
Beiträge: 479
Registriert: Sa, 06.03.2004 13:58

Alle Tabellenblätter schützen

Beitrag von mike6 »

Hallo,

mit dem Makro:

++++++++++++++++++++++++++++++++++++++
Sub Schutz_Tabellenblatt
Dim objDatei As Object
Dim objBlaetter As Object
Dim objBlatt As Object
objDatei = ThisComponent
objBlaetter = objDatei.Sheets
objBlatt = objDatei.Sheets(0)

If objBlatt.isProtected() = True Then
objBlatt.unprotect("")
MsgBox "Schutz auf"

Else
objBlatt.protect("")
MsgBox "Schutz zu"
End If

End Sub
++++++++++++++++++++++++++++

schütze ich ein Tabellenblatt bzw. heben den Schutz auf.

Wie ändere ich das Makro ab, damit (alle) Tabellenblätter geschützt sind.


mfg
mike6
ykcim
*****
Beiträge: 324
Registriert: Di, 29.07.2003 15:22
Wohnort: Neu-Isenburg
Kontaktdaten:

Beitrag von ykcim »

In dem Du eine Schleife über alle Tabellenblätter machst und jedes einzeln schützt.

Code: Alles auswählen

  myDoc = thisComponent
  Anzahl=myDoc.Sheets.count
  For i=0 to Anzahl-1
      objBlatt = myDoc.Sheets(i)
      If objBlatt.isProtected() = True Then
      objBlatt.unprotect("")
        MsgBox "Schutz auf"
 
      Else 
       objBlatt.protect("")
     MsgBox "Schutz zu"
   End If 
  Next i

mfg
Michael
__
FAQ zu Starbasic -> http://www.starbasicfaq.de
mike6
*****
Beiträge: 479
Registriert: Sa, 06.03.2004 13:58

Beitrag von mike6 »

Hallo Michael,

danke für die Erläuterung.


mfg
mike6
mike6
*****
Beiträge: 479
Registriert: Sa, 06.03.2004 13:58

Beitrag von mike6 »

Hallo,

das nachfolgende makro schützt alle Tabellenblätter.
++++++++++++++++++++++++++++++++++++
Sub Schutz_Tabellenblatt
Dim objDatei As Object
Dim objBlaetter As Object
Dim objBlatt As Object
myDoc = thisComponent
Anzahl=myDoc.Sheets.count
For i=0 to Anzahl-1
objBlatt = myDoc.Sheets(i)
If objBlatt.isProtected() = True Then
objBlatt.unprotect("")
MsgBox "Schutz auf"
Else
objBlatt.protect("")
MsgBox "Schutz zu"
End If
Next i
End Sub
++++++++++++++++++++++++++++++++++++

Leider hat es noch einen kleinen Fehler.
Wenn ich 40 Tabellenblätter damit schütze, kommt 40 x
die MsgBox "Schutz zu ".

Wie kann ich das noch abstellen?

mfg
mike6
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Beitrag von Stephan »

Wir kennen Deine Anforderungen ja garnicht. Es könnte sein das bestimmte Einzelblätter unter bestimmten Bedingungen gemeldet werden sollen.
Ohne Rücksicht darauf brauchst Du doch lediglich die Anzeige nach der Schleife erfolgen zu lassen. Meinethalben so:

Code: Alles auswählen

Sub Schutz_Tabellenblatt 
Dim objDatei As Object 
Dim objBlaetter As Object 
Dim objBlatt As Object 
myDoc = thisComponent 
Anzahl=myDoc.Sheets.count 
For i=0 to Anzahl-1 
objBlatt = myDoc.Sheets(i) 
If objBlatt.isProtected() = True Then 
objBlatt.unprotect("") 
zustand = "auf"
Else 
objBlatt.protect("") 
zustand = "zu"
End If 
Next i 
MsgBox "Schutz " & zustand 
End Sub 
keine Ahnung ob das für Dich zweckmäßig ist.


Gruß
Stephan
mike6
*****
Beiträge: 479
Registriert: Sa, 06.03.2004 13:58

Beitrag von mike6 »

Hallo,

Danke, :P das wars.


mfg
mike6
Antworten