Excel: Wenn alle Kreuzchen gesetzt, dann soll im Deckblatt ein Feld auf grün

  • #1
F

falcon30

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

ich habe da wieder eine Frage.
Und zwar ist das die Fortsetzung von .

Wenn alle Kreuzchen gesetzt sind, dann soll im Deckblatt ein Feld auf grün gesetzt werden.

Wobei die  Anzahl der Kreuzchen pro Worksheet unterschiedlich sind, da jedes WS unterschiedlich viele Fragen haben.

Jetzt kommt die schwierige Passage:

Durch ein Dropdown-Menü werden am Anfang alle WS bis auf das Ausgewählte versteckt, d.h. es ist immer nur ein WS mit Fragen aktiv. Es werden dann keine anderen WS mehr aktiviert. Diese Fragenliste wird nun mit Kreuzen versehen, genaue Beschreibung siehe Link.

Wäre toll wenn Ihr mir wieder helfen könntet.

Vielen Dank im Voraus.

Grüße falcon30
 
  • #2
Hallo falcon30,

könnte man die Auswertefunktion so lösen, dass die Anzahl der Checkboxen auf dem aktuellen Blatt festgestellt wird und wenn die Hälfte davon den Value True hat gibt's ne grüne Lampe ?

Gruß Matjes :)
 
  • #3
Hi Matjes,

ich denke das wäre ok.

Grüße
falcon30
 
  • #4
Hi,

Benutze vielleicht im Menü Format die bedingte Formatierung.

Mike
 
  • #5
Hallo Falcon30,

dann probier's mal aus. Das Makro muß in der Code-Seite des Deckblattes liegen.

Die Konstanten mußt du den Gegebenheiten anpassen (siehe <<< A N P A S S E N  >>>).

Gruß Matjes :)
Code:
Option Explicit
'*************************************************************************************
Private Sub Worksheet_Activate()
 -><<< A N P A S S E N  >>>
  Const cDECKBLATT_NAME = Deckblatt
  Const cDECKBLATT_RANGEAMPEL = A5
 -><<< A N P A S S E N  E N D E >>>
  Dim ws As Worksheet
  
  For Each ws In ThisWorkbook.Worksheets
   ->worksheet sichtbar ?
    If ws.Visible = xlSheetVisible Then
     ->nicht dieses Blatt ?
      If ws.Name <> Me.Name Then
        If HaelfteAllerCheckboxenGesetztPruefen(ws) Then
         ->Farbe gruen in Ampel setzen, wenn die Hälfte oder mehr auf dem Blatt gesetzt ist
          Me.Range(cDECKBLATT_RANGEAMPEL).Interior.ColorIndex = 4
        Else
         ->Farbe in Ampel löschen
          Me.Range(cDECKBLATT_RANGEAMPEL).Interior.ColorIndex = xlColorIndexNone
        End If
        Exit For
      End If
    End If
  Next
  Set ws = Nothing
End Sub
'*************************************************************************************
Private Function HaelfteAllerCheckboxenGesetztPruefen(ws As Worksheet) As Boolean
'True, wenn die Anzahl der Checkboxen mit True >= der mit False ist
  
  Dim obj As Object, lChBCnt As Long, lChBTrueCnt As Long

  For Each obj In ws.OLEObjects
    If obj.ProgId = Forms.CheckBox.1 Then
      lChBCnt = lChBCnt + 1
      If obj.Object.Value = True Then
        lChBTrueCnt = lChBTrueCnt + 1
      End If
    End If
  Next
  If lChBCnt > 0 Then
   ->Hälfte oder mehr der Checkboxen True ?
    If (2 * lChBTrueCnt) >= lChBCnt Then HaelfteAllerCheckboxenGesetztPruefen = True
  End If
AUFRAEUMEN:
  Set obj = Nothing
End Function
 
  • #6
Hallo Matjes,

ich habe alle WS außer den zwei WS ausgeblendet.
Um zu kontrollieren ob die Farbsetzung funktioniert habe ich
Code:
'Farbe in Ampel löschen
          Me.Range(cDECKBLATT_RANGEAMPEL).Interior.ColorIndex = xlColorIndexNone

in

Code:
'Farbe in Ampel löschen
          Me.Range(cDECKBLATT_RANGEAMPEL).Interior.ColorIndex = 3
geändert.
Die rote Farbe wird gesetzt, doch dann passiert irgendwie nichts.

Dein Makro müsste x auswerten. Wie wird festgestellt wieviele x ich setzen muss, da ich keine Checkboxen habe.

Wie müsste das Makro aussehen wenn ich  2 zusätzliche WS habe, die aber nicht ausgewertet werden sollen.

Grüße
falcon30
 
  • #8
Hallo falcon,

man könnte das Zählen der gesetzen CheckBoxen durch das Zählen von x in vorbestimmten Bereichen ersetzen. Wie sähen den z.B. die Bereiche von 2 Tabellen aus ? Sind das zwei Spalten (Ja und nein) ?

Man könnte einen Array erzeugen, mit dem für jedes Blatt beschrieben wird, ob es ausgewertet werden soll, in welchen Bereichen die x gezählt werden sollen und damit auch die mögliche Gesamtanzahl von x'en ...

Schick mir doch mal eine Beispielmappe mit 2 Tabellen (Fragen-text kann durch Text erstezt werden. Dann kann ich vielleicht besser sehen, wie die günstigste Beschreibungsart ist.

Wie müsste das Makro aussehen wenn ich  2 zusätzliche WS habe, die aber nicht ausgewertet werden sollen.
Einfach diese IF-Anweisung erweitern
Code:
If ws.Name <> Me.Name Then
in
Code:
If ws.Name <> Me.Name And _
   ws.Name <> Name tabellex And _
  ws.Name <> Name tabelley And _
   Then
Gruß Matjes :)
 
  • #9
Hallo Matjes,

vielen Dank!!

Funktioniert echt klasse!!

Grüße
falcon30
 
Thema:

Excel: Wenn alle Kreuzchen gesetzt, dann soll im Deckblatt ein Feld auf grün

ANGEBOTE & SPONSOREN

Statistik des Forums

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