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

Dieses Thema Excel: Wenn alle Kreuzchen gesetzt, dann soll im Deckblatt ein Feld auf grün im Forum "Microsoft Office Suite" wurde erstellt von falcon30, 4. Okt. 2006.

Thema: Excel: Wenn alle Kreuzchen gesetzt, dann soll im Deckblatt ein Feld auf grün Hallo Zusammen, ich habe da wieder eine Frage. Und zwar ist das die Fortsetzung von...

  1. Hallo Zusammen,

    ich habe da wieder eine Frage.
    Und zwar ist das die Fortsetzung von http://www.wintotal-forum.de/index.php/topic,118387.0.html.

    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
     
  7. 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.

    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 :)
     
  8. Hallo Matjes,

    vielen Dank!!

    Funktioniert echt klasse!!

    Grüße
    falcon30
     
Die Seite wird geladen...

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

Forum Datum
VBA Excel Pop up Fenster wenn D4="Ja" und I7="leer" Microsoft Office Suite 6. Mai 2015
Excel 2010 Wenn Zelle leer dann, Wenn in Zelle x dann Windows XP Forum 28. Nov. 2013
Word u. Excel starten verzögert, wenn Dokumente direkt geöffnet werden Microsoft Office Suite 28. Juni 2012
Excel 2003 Verschachtelte Wenn-Funktion Microsoft Office Suite 30. Jan. 2009
Excel: Makro mit Bedinung "wenn leer, kopieren von und einfügen" Windows XP Forum 21. Juli 2008