Seite 1 von 1

Makros aus Excel funktionieren nicht mehr?!

Verfasst: Mi, 21.06.2006 17:42
von Lobo-mau
Hallo,

zu Hause nutze ich OpenOffice 2.0 und auf der Arbeit Excel (keine Ahnung, welche Version). Nun habe ich mir heute auf der Arbeit eine Tabelle erstellt, die ich zu Hause weiterbearbeiten wollte. Leider musste ich feststellen, dass die ganzen Makros nicht mehr funktionieren.
Ich denke, dass es an Syntaxunterschieden liegt. Leider habe ich keine Ahnung, wie die Syntax aussehen muss.

Ich poste mal ein Makro.
Dieses Makro soll für alle Blätter meiner Arbeitsblätter den Blattschutz aktivieren. Weiss vielleicht jemand, wie es richtig lauten müsste?

Code: Alles auswählen

Sub Blattschutz_setzen()
  For i = 1 To Sheets.Count
    Sheets(i).Activate
    ActiveSheet.Protect Password:="Passwort"
  Next i
  Sheets(1).Activate
End Sub

Verfasst: Mi, 21.06.2006 19:58
von Stephan

Code: Alles auswählen

Sub Blattschutz_setzen() 
For i = 0 To ThisComponent.Sheets().Count-1
	ThisComponent.Sheets(i).protect("Passwort") 
Next i 
End Sub

Gruß
Stephan

Verfasst: Mi, 21.06.2006 20:25
von Lobo-mau
Stephan hat geschrieben:

Code: Alles auswählen

Sub Blattschutz_setzen() 
For i = 0 To ThisComponent.Sheets().Count-1
	ThisComponent.Sheets(i).protect("Passwort") 
Next i 
End Sub

Gruß
Stephan
Es hat funktioniert! Danke! :)

Aber eine Frage hätte ich noch.

Warum:

Code: Alles auswählen

ThisComponent.Sheets().Count-1
Warum nicht +1, wo der Zähler doch bei 0 beginnt?

Verfasst: Mi, 21.06.2006 21:11
von Stephan
wo der Zähler doch bei 0 beginnt?
Und was verstehst Du unter "Zähler"?

Code: Alles auswählen

.Count
ist die Anzahl der Tabellen, also nichts zu zählen sondern eine einzige Zahl, und in:

Code: Alles auswählen

ThisComponent.Sheets(i)
ist i der Tabellenindex.
Da nun logischerweise für 3 Tabellen die Anzahl der Tabellen 3 ist (.Count -->=3), die Tabellen aber angesprochen werden mit:

Code: Alles auswählen

ThisComponent.Sheets(0)
ThisComponent.Sheets(1)
ThisComponent.Sheets(2)
ist für 3 Tabellen der höchste Index 2, also .Count-1


Gruß
Stephan

Verfasst: Mi, 21.06.2006 21:36
von Lobo-mau
Stephan hat geschrieben:
wo der Zähler doch bei 0 beginnt?
Und was verstehst Du unter "Zähler"?

Code: Alles auswählen

.Count
ist die Anzahl der Tabellen, also nichts zu zählen sondern eine einzige Zahl, und in:

Code: Alles auswählen

ThisComponent.Sheets(i)
ist i der Tabellenindex.
Da nun logischerweise für 3 Tabellen die Anzahl der Tabellen 3 ist (.Count -->=3), die Tabellen aber angesprochen werden mit:

Code: Alles auswählen

ThisComponent.Sheets(0)
ThisComponent.Sheets(1)
ThisComponent.Sheets(2)
ist für 3 Tabellen der höchste Index 2, also .Count-1


Gruß
Stephan
Ahja, ich verstehe.

Der Zähler war für mich die Variable "i". Die hat am Anfang ja den Wert 0. Ich ging davon aus, dass die Tabelle 1 = ThisComponent.Sheets(1) wäre, deswegen wunderte ich mich einmal darüber, dass bei Null begonnen wird und dann noch, dass die Variable i um eins verringert wird.

Aber nun bin ich erleuchtet. ;)