Makros aus Excel funktionieren nicht mehr?!

Das Tabellenkalkulationsprogramm

Moderator: Moderatoren

Lobo-mau
Beiträge: 7
Registriert: Mi, 21.06.2006 17:39

Makros aus Excel funktionieren nicht mehr?!

Beitrag 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
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Beitrag 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
Lobo-mau
Beiträge: 7
Registriert: Mi, 21.06.2006 17:39

Beitrag 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?
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Beitrag 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
Lobo-mau
Beiträge: 7
Registriert: Mi, 21.06.2006 17:39

Beitrag 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. ;)
Antworten