Excel: Mit mehreren Checkboxen woksheets ein- bzw ausblenden

  • #1
F

falcon30

Bekanntes Mitglied
Themenersteller
Dabei seit
21.06.2005
Beiträge
94
Reaktionspunkte
0
Hallo Zusammen,

ich brauche dringend hilfe!!

Ich habe ein Worksheet mit ca 30 Checkboxen.
Mit den Checkboxen würde ich gerne Worksheets die ein bzw. ausgeblendet werden sollen selektieren.

Das aus- bzw. einblenden soll über zwei Optionsfleder erfolgen:
Optionsfeld 1: alles Einblenden
Optionsfeld 2: Selektierte WS ausblenden.
Wie kann ich danach die selektierten WS mit einer Befehlsschaltfläche drucken bzw. eine Vorschau generieren?


Wäre echt klasse wenn Ihr mir helfen könntet.

Vielen Dank im Voraus.

Grüße
falcon30
 
  • #2
Hallo falcon30,

die erste Frage, die sich stellt:
Wie ergibt sich die Verbindung von einer Checkbox zu einem Worksheet ?
a) feste programmierte Zuordnung (z.B. Checkbox-Name xyz --> Tabelle2)
b) Tabellenname ist in der Checkbox-Eigenschaft Caption enthalten

b) wäre zu bevorzugen

Weitere Frage: gibt es auf dem Blatt noch weitere Checkboxen, die nicht zum Ein/Ausbenden der Blätter dienen sollen ?

Gruß Matjes :)

ps.schau mal in dein Postfach ;)
 
  • #3
Also die Beispiel-Datei besteht aus Folgendem:

4 Blätter mit irgendwelchem Inhalt (nur nicht leer)
Namen:
Tab 0001
Tab 0002
Tab 0003
Tab 0004

1 Blatt
Name: Master

mit 4 Checkboxen
Eigenschaften->Caption jeweils einen Tabellenblattnamen Tab 0001, Tab 0002, Tab 0003, Tab 0004

mit 5 Option-Button
a) Eigenschaften:
Eigenschaften->Name : OB_nichtsmachen
Eigenschaften->Caption : nichts machen
Eigenschaften->GroupName: MasterOB
b)
Eigenschaften->Name : OB_ausblenden
Eigenschaften->Caption : ausblenden
Eigenschaften->GroupName: MasterOB
c)
Eigenschaften->Name : OB_allesEinblenden
Eigenschaften->Caption : alles einblenden
Eigenschaften->GroupName: MasterOB
d)
Eigenschaften->Name : OB_DruckVorschau
Eigenschaften->Caption : Druck-Vorschau
Eigenschaften->GroupName: MasterOB
e)
Eigenschaften->Name : OB_Druck
Eigenschaften->Caption : drucken
Eigenschaften->GroupName: MasterOB

GroupName wird hier bei den Option-Button gesetzt, um zu erreichen, dass automatisch immer nur einer ausgewählt ist.

In die Code-Seite des Master-Blattes muß dann folgender Code eingesetzt werden:
Code:
Option Explicit
'************************************************************************************************
Private Function TestChkBox(wsm As Worksheet, fBlattname() As String, fValue() As Boolean, fCnt As Long)
'*** Makro sucht auf dem Arbeitsblatt alle Checkboxen
'*** Caption der jeweiligen Checkbox wird geprüft, ob es einem Blattnamen entspricht
'***  Wenn nein, erfolgt eine Meldung
'*** Caption(also Blattname) und Value werden in Feldern gespeichert und zurückgegeben.

 Dim wsx As Worksheet, o As Object
 Dim sCaption As String
 ReDim fBlattname(1 To 1): ReDim fValue(1 To 1): fCnt = 0
 For Each o In wsm.OLEObjects
  If o.progID = Forms.CheckBox.1 Then
   sCaption = o.Object.Caption
   Set wsx = Nothing
   On Error Resume Next
   Set wsx = wsm.Parent.Worksheets(sCaption)
   On Error GoTo 0
   If wsx Is Nothing Then
    MsgBox _
     Caption in Checkbox enthält kein Blattnamen ! & vbLf & vbLf & _
     Datei-Name:-> & wsm.Parent.Name &-> & vbLf & _
     Blatt-Name:-> & wsm.Name &-> & vbLf & _
     CheckBox-Name:-> & o.Name &-> & vbLf & _
     Caption:-> & sCaption &->
   Else
    If wsx.Name = wsm.Name Then
     MsgBox 
    Else
     fCnt = fCnt + 1
     ReDim Preserve fBlattname(1 To fCnt)
     ReDim Preserve fValue(1 To fCnt)
     fBlattname(fCnt) = sCaption
     fValue(fCnt) = o.Object.Value
    End If
   End If
  End If
 Next
 Set wsx = Nothing: Set o = Nothing
End Function
'*************************************************
Private Function MeinDrucken(bDrucken As Boolean)

 Dim fBlattname() As String, fValue() As Boolean, fCnt As Long
 Dim x As Long, bSichtbarGemacht As Boolean
 
 Call TestChkBox(Me, fBlattname(), fValue(), fCnt)
 
 If fCnt > 0 Then
  For x = 1 To fCnt
   If fValue(x) Then
    If Me.Parent.Worksheets(fBlattname(x)).Visible <> xlSheetVisible Then
     bSichtbarGemacht = True
     Me.Parent.Worksheets(fBlattname(x)).Visible = True
    Else
     bSichtbarGemacht = False
    End If
    If bDrucken Then
     Me.Parent.Worksheets(fBlattname(x)).Print
    Else
     Me.Parent.Worksheets(fBlattname(x)).PrintPreview
    End If
    If bSichtbarGemacht Then
     Me.Parent.Worksheets(fBlattname(x)).Visible = False
    End If
   End If
  Next
 End If

End Function
'*************************************************
Private Sub OB_allesEinblenden_Click()
 Dim fBlattname() As String, fValue() As Boolean, fCnt As Long, x As Long
 
 Call TestChkBox(Me, fBlattname(), fValue(), fCnt)
 
 If fCnt > 0 Then
  Application.ScreenUpdating = False
  For x = 1 To fCnt
   Me.Parent.Worksheets(fBlattname(x)).Visible = True
  Next
  Application.ScreenUpdating = True
 End If
 Me.OB_nichtsmachen.Value = True
End Sub
'*************************************************
Private Sub OB_ausblenden_Click()
 Dim fBlattname() As String, fValue() As Boolean, fCnt As Long, x As Long
 
 Call TestChkBox(Me, fBlattname(), fValue(), fCnt)
 
 If fCnt > 0 Then
  Application.ScreenUpdating = False
  For x = 1 To fCnt
   If fValue(x) Then
    Me.Parent.Worksheets(fBlattname(x)).Visible = False
   End If
  Next
  Application.ScreenUpdating = True
 End If
 Me.OB_nichtsmachen.Value = True
End Sub
'*************************************************
Private Sub OB_Druck_Click()
 Call MeinDrucken(True)
 Me.OB_nichtsmachen.Value = True
End Sub
'*************************************************
Private Sub OB_DruckVorschau_Click()
 Call MeinDrucken(False)
 Me.OB_nichtsmachen.Value = True
End Sub
'*************************************************
Private Sub Worksheet_Activate()
 Me.OB_nichtsmachen.Value = True
End Sub

Gruß Matjes ;)
 
Thema:

Excel: Mit mehreren Checkboxen woksheets ein- bzw ausblenden

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.840
Beiträge
707.965
Mitglieder
51.494
Neuestes Mitglied
Flensburg45
Oben