Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
604to608
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
604to608
604to608
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

WS mit Diagramm über VBA ansprechen

WS mit Diagramm über VBA ansprechen
04.05.2005 11:38:52
Torsten K.
Hallo beisammen,
zu folgendem Code habe ich 2 Fragen:

Private Sub Workbook_Open()
Application.ScreenUpdating = False
Dim ws As Worksheet
Dim Username As Integer
For Each ws In ThisWorkbook.Worksheets
If ws.Name <> "WARNING" Then
ws.Visible = True
Else
End If
Next ws
Sheets("Diagramm A").Visible = True
Sheets("Diagramm C").Visible = True
If Application.Username <> "GWS-GI" Then
Application.CommandBars("ply").Enabled = False
For Each ws In Me.Sheets
If ws.ProtectContents = True Then _
ws.Unprotect "TEST"
ws.Visible = xlSheetVisible
ws.EnableSelection = xlNoSelection
ws.Protect "TEST"
Next ws
Else
For Each ws In Me.Sheets
ws.Unprotect "TEST"
Next ws
End If
Sheets("WARNING").Visible = xlVeryHidden
Application.ScreenUpdating = True
End Sub


1. Warum muß ich beim Einblenden der WS mit Diagramm die WS separat ansprechen; warum funktioniert das nicht über die For-Each-Schleife?
2. In der EnableSelection-Schleife bleibt Excel hängen und markiert die Zeile "Next ws". Ich vermute, daß dies an den beiden WS mit Diagramm liegt, denn wenn ich die beiden rausschmeiße, läuft der Code durch. Wie muß ich diesen Teil des Codes anpassen, damit Excel auch die Diagramme in den WS vor dem Selektieren/Markieren schützt?
Für Eure Hilfe im voraus besten Dank.
Gruß
Torsten

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: WS mit Diagramm über VBA ansprechen
04.05.2005 12:29:03
Holger
zu1 Diagrammsheets sind nun mal keine Worksheets.
zu2 xlNoSelection bezieht sich auf das Range-Objekt, das es in Diagrammsheets
aber nicht gibt, schütz die Diagramme separat.
mfg Holger
AW: WS mit Diagramm über VBA ansprechen
04.05.2005 13:52:16
Torsten K.
Hallo Holger,
vielen Dank für Deine Rückmeldung.
Wie schütze ich denn die Diagramme separat?
Gruß
Torsten
AW: WS mit Diagramm über VBA ansprechen
04.05.2005 14:05:26
Holger
Hi,
ähnlich wie in der ersten Schleife, nur die Workbooks in die Schleife nehmen
und die Diagramme einzeln. Wie ein Diagrammblatt geschützt wird sagt dir der
Makrorekorder.
mfg Holger
AW: WS mit Diagramm über VBA ansprechen
04.05.2005 14:15:39
Torsten K.
Hallo Holger,
wie spreche ich denn das Diagrammblatt an, wenn nicht über WS, letztlich ist es doch auch nur ein Worksheet? Wie müßte denn dann die Schleife aussehen?
Außerdem kann ich das Diagrammblatt nicht über Extras-Schutz schützen, weil der Menüpunkt "Blatt Schützen" nicht angeboten wird. Das kann ich daher leider nicht über den Makrorecorder nachvollziehen.
Vielen Dank für Deine Geduld im voraus.
Gruß
Torsten
Anzeige
AW: WS mit Diagramm über VBA ansprechen
04.05.2005 14:39:50
Holger
"letztlich ist es doch auch nur ein Worksheet?" Eben nicht.
"Außerdem kann ich das Diagrammblatt nicht über Extras-Schutz schützen, weil der Menüpunkt "Blatt Schützen" nicht angeboten wird." Das kann ich nicht glauben,
wenn deine Excelversion stimmt. Ich glaube, ich kann dir nicht helfen.
mfg Holger
AW: WS mit Diagramm über VBA ansprechen
08.05.2005 08:30:25
andre
Hallöchen,
spreche die Blätter mit Sheets an und nicht mit Worksheets - auch beim Dim ... as Sheet. Damit erfasst Du alle Blätter.
AW: WS mit Diagramm über VBA ansprechen
09.05.2005 08:25:23
Torsten K.
Hallo Andre,
vielen Dank für Deine Rückmeldung.
Bei "Dim ws as Sheets" statt "Dim ws as Worksheet" erhalte ich eine Fehlermeldung:
"Benutzerdefinierter Typ nicht definiert"
Weißt Du Rat?
Gruß
Torsten
Anzeige
AW: WS mit Diagramm über VBA ansprechen
09.05.2005 19:42:19
andre
Hallo Torsten,
sollte eigentlich funktionieren. Bei mir läuft z.b. das:

Sub test()
Dim ws As Sheets
Set ws = ThisWorkbook.Sheets
For Each blatt In ws
MsgBox blatt.Name & " Typ: " & blatt.Type
Next
MsgBox XlSheetType.xlChart 'andere Nummer als bei blatt.Type !!
MsgBox XlSheetType.xlWorksheet 'gleiche Nummer wie bei blatt.Type
Set ws = Nothing
End Sub

Schaue mal in die Verweise ob die Excel .. Object Library dabei ist.
Grüße, Andre
AW: WS mit Diagramm über VBA ansprechen
10.05.2005 08:55:05
Torsten K.
Hallo Andre,
eingebunden ist die Excel 9.0 Object Library.
Ich habe Deinen Code mal über meine Datei laufen lassen und festgestellt, daß die Diagrammblätter den Typ: 3 aufweisen, und die normalen Worksheets Typ: -4167.
Hilft uns das weiter?
Gruß
Torsten
Anzeige
AW: WS mit Diagramm über VBA ansprechen
10.05.2005 19:50:48
andre
Hallo Torsten,
die Nummern helfen nicht, aber es ist ein Zeichen, dass die Befehle stimmen. Der Punkt wird sein, dass Du in Deinem code dem ws ein Blatt zuweisen willst, aber hier die Blattliste erwartet wird aus der Du erst das einzelne Blatt ansprechen musst - siehe im Beispiel For ....
Du musst Deinen code entsprechend anpassen.
hier mal ein Anfang:
statt
Dim ws As Worksheet
Dim Username As Integer
For Each ws In ThisWorkbook.Worksheets
If ws.Name <> "WARNING" Then
geändert
Dim blatt As Worksheet, ws as Sheets
Dim Username As Integer
set ws=thisworkbook.sheets
For Each blatt In ws
If blatt.Name <> "WARNING" Then
...
Grüße, Andre
Anzeige
AW: erledigt - mT
11.05.2005 09:06:10
Torsten K.
Hallo Andre,
vielen Dank für Deine Unterstützung.
Da ich auch nach Umsetzung Deines Vorschlages noch Probleme mit den Diagrammblättern habe, habe ich diese kurzerhand aus der Datei rausgeworfen. Muß dann halt auch so gehen.
Ob wohl, interessant wär's schon, wie das mit den Diagrammblättern gehen könnte.....
Wie dem auch sein, nochmals vielen Dank für Deine Hilfe.
Gruß
Torsten

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige