Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema CommandButton
BildScreenshot zu CommandButton CommandButton-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema TextBox
BildScreenshot zu TextBox TextBox-Seite mit Beispielarbeitsmappe aufrufen

Bedingte Formatierung

Betrifft: Bedingte Formatierung von: Dieter
Geschrieben am: 30.08.2004 15:08:41

Hallo Forum,
wie muss die Formel ( Bedingte Formatierung )lauten wenn CG3 mit der jetzigen Hintergrundfarbe dargestellt wird, sollte in CG7 anstatt "Tu" ein "V" erscheinen.

Zum Hintergrund meiner Frage die Tab.ist ein Urlaubsplaner,die Url. Eintäge werden über eine UF eingegeben und autom. eingetragen.

Da wir in Konti-Schicht arbeiten zählen zwar die Sa. u. So. Tage aber nicht die Feiertage als Urlaub, und somit sollten diese Tage mit einen "V" im Planer gekennzeichnet werden.



1. Halbjahr
 CFCGCHCICJ
324.03.200525.03.200526.03.200527.03.200528.03.2005
4DoFrSaSoMo
5OFFSS
6     
7 TuTuTuTu
Formeln der Tabelle
CF3 : =CE3+1
CG3 : =CF3+1
CH3 : =CG3+1
CI3 : =CH3+1
CJ3 : =CI3+1
CF4 : =CF3
CG4 : =CG3
CH4 : =CH3
CI4 : =CI3
CJ4 : =CJ3
 
Excel Tabellen einfach im Web darstellen   Excel Jeanie HTML  2.0    Download  
  


Betrifft: AW: Bedingte Formatierung von: ransi
Geschrieben am: 30.08.2004 16:21:05

hallo

wenn ich dich richtig verstehe möchtest du mit der bedingten formatierung einer zelle
einen wert zuweisen.
das geht nicht.
wenn die farbe in cg3 allerdings mit der bedingten formatierung erstellt ist,
kannst du mit einer wenn() Abfrage cg7 den gewünschten wert zuweisen.
ungefähr so:
in cg7 =wenn(bedingtes format für cg3=wahr;dann Tu; sonst Vu)
oder du machst es mit vba.

ransi


  


Betrifft: AW: Bedingte Formatierung von: Wolfgang
Geschrieben am: 30.08.2004 16:45:08

Hallo Dieter,

du könntest das ganze mit benutzerdefinierter Formel machen:

Function Farbewenn(bereich As Range, farbe As Integer, Name As String)
Dim zelle
Application.Volatile
For Each zelle In bereich
If zelle.Interior.ColorIndex = farbe Then
Farbewenn = Name
End If
Next
End Function


Diesen Code weist du einem Standmodul im VB Editor zu (diesen erreichst du mit Alt+F11). Anschließend kannst du in die Zelle in der das V stehen soll folgende Formel eingeben:

=farbewenn("Bereich"; "Farbe"; "Text")

Wobei
- Bereich die Zelle ist von der du die Farbe prüfen willst
- Farbe ist die Nummer für deine gesuchte Farbe (für dein Orange wäre es sie 40)
- Text der eingegeben werden soll, in deinem Fall also das "V"

Ich hoffe das ich dir weiterhelfen konnte
Gruß
Wolfgang


  


Betrifft: AW: Bedingte Formatierung von: Dieter
Geschrieben am: 30.08.2004 17:17:50

Hallo Wolfgang,erst mal Danke für deine Antwort.
Ich habe mal den Code so wie er jetzt vorhanden ist reingestellt. Vieleicht ist es sogar in dem Code schon möglich etwas zuändern .Leider kenne ich mich nicht damit aus.

Das einzige was ich darin geändert habe ist, das die freien Tage nicht mit gezählt werden. Habe ich mal im Code Kommentiert.Vieleicht gibt es ja eine einfache Lösung.

MfG Dieter








Private Sub CommandButton1_Click()
' Urlaubsplaner
' geschrieben am 26.07.2001
' postmaster@klaus-dieter-2000.de

Dim dat As Date, dat2 As Date, dat3 As Date                     ' Variablen deklarieren
dat = Me.TextBox1                                               ' Wert aus UserForm zuweisen
dat2 = Me.TextBox2                                              ' Wert aus UserForm zuweisen
Worksheets("1. Halbjahr").Activate                              ' Tabellenblatt 1 aktivieren
    If dat2 > Cells(3, 182) And dat < Cells(3, 182) Then        ' Urlaubszeitraum über Jahresmitte?
        dat3 = dat2                                             ' Dann neue Werte zuweisen
        dat2 = Cells(3, 182)                                    '           "
    End If                                                      ' Ende If
If dat > Cells(3, 182) Then Worksheets("2. Halbjahr").Activate  ' wenn Urlaubsbeginn im 2. Haljahr Tabellenblatt aktivieren
    sp = 1                                                      ' Startwert für Do-While-Schleife
    Do While Cells(3, sp) <> dat                                ' Start Schleife (Urlausbeginn suchen)
        sp = sp + 1                                             ' Zähler um Wert 1 erhöhen
    Loop                                                        ' Wendepunkt für Schleife
sp2 = 1                                                         ' Startwert für Do-While-Loop-Schleife
Do While Cells(3, sp2) <> dat2                                  ' Start Schleife (Urlausende suchen)
    sp2 = sp2 + 1                                               ' Zähler um Wert 1 erhöhen
Loop                                                            ' Wendepunkt für Schleife
z = 4                                                           ' Startwert für Do-While-Schleife
Do While Cells(z, 1) <> Me.ComboBox1                            ' Start Schleife (Mitarbeiter suchen)
    z = z + 1                                                   ' Zähler um Wert 1 erhöhen
Loop                                                            ' Wendepunkt für Schleife
If dat3 > 0 Then GoTo Seitenwechsel                             ' wenn Urlaubsende im 2. Halbjahr gehe zur Unterroutine
    For r = sp To sp2                                           ' sonst Schleifenstart für Tabelleneintrag
        Cells(3, r).Select                                      ' Zellen selektieren
            If Format(Cells(5, r), "ddd") = "O" _ 'meine Änderung von "Sa" in "O"
            Or Cells(2000, r) = 2 _
            Or Format(Cells(5, r), "ddd") = "O" Then GoTo sprung ' wenn Sonnabend oder Sonntag kein Eintrag
        Cells(z, r) = "Tu"                                       ' Eintrag für Urlaub
        ut = ut + 1
        TextBox3 = "Es werden " & ut & " Urlaubstage" & Chr(13) & "benötigt"
sprung:                                                         ' Sprungziel (wenn kein Eintrag)
    Next r                                                      ' Schleifenzähler
    Exit Sub                                                    ' Programmende, wenn Urlaub nur im 1. Halbjahr
Seitenwechsel:                                                  ' Sprungziel wenn Urlaubsanteile im 2. Halbjahr
For r = sp To sp2                                               ' Schleifenstart für Tabelleneintrag
    Cells(3, r).Select                                          ' Zellen selektieren
        If Format(Cells(5, r), "ddd") = "O" _
        Or Format(Cells(5, r), "ddd") = "O" Then GoTo sprung1  ' wenn Sonnabend oder Sonntag kein Eintrag
    Cells(z, r) = "Tu"                                           ' Eintrag für Urlaub
    ut2 = ut2 + 1
sprung1:                                                        ' Sprungziel (wenn kein Eintrag)
Next r                                                          ' Schleifenzähler
Worksheets("2. Halbjahr").Activate                              ' Tabellenblatt 2 aktivieren
sp3 = 2                                                         ' Startwert für Do-While-Loop-Schleife
Do While Cells(3, sp3) <> dat3                                  ' Start Schleife (Urlausende suchen)
    sp3 = sp3 + 1                                               ' Schleifenzähler
Loop                                                            ' Wendepunkt für Schleife
For s = 2 To sp3                                                ' Schleifenstart für Tabelleneintrag
    Cells(3, s).Select                                          ' Zellen selektieren
        If Format(Cells(5, s), "ddd") = "O" _
        Or Format(Cells(5, s), "ddd") = "O" Then GoTo sprung2  ' wenn Sonnabend oder Sonntag kein Eintrag
    Cells(z, s) = "Tu"                                           ' Eintrag für Urlaub
    ut2 = ut2 + 1
        TextBox3 = "Es werden " & ut2 & " Urlaubstage" & Chr(13) & "benötigt"
sprung2:                                                        ' Sprungziel wenn kein Eintrag
Next s                                                          ' Schleifenzähler

End Sub
' Programmende

Private Sub CommandButton2_Click()
UserForm1.Hide                                                  ' UserForm schließen
End Sub



  


Betrifft: AW: Bedingte Formatierung von: Wolfgang
Geschrieben am: 31.08.2004 08:47:59

Hallo Dieter,

versuchs mal hiermit. konnte es leider gerade nicht testen, also wenns nicht klappt einfach nochmal melden...


Private Sub CommandButton1_Click()
' Urlaubsplaner
' geschrieben am 26.07.2001
' postmaster@klaus-dieter-2000.de

Dim dat As Date, dat2 As Date, dat3 As Date                     ' Variablen deklarieren
dat = Me.TextBox1                                               ' Wert aus UserForm zuweisen
dat2 = Me.TextBox2                                              ' Wert aus UserForm zuweisen
Worksheets("1. Halbjahr").Activate                              ' Tabellenblatt 1 aktivieren
    If dat2 > Cells(3, 182) And dat < Cells(3, 182) Then        ' Urlaubszeitraum über Jahresmitte?
        dat3 = dat2                                             ' Dann neue Werte zuweisen
        dat2 = Cells(3, 182)                                    '           "
    End If                                                      ' Ende If
If dat > Cells(3, 182) Then Worksheets("2. Halbjahr").Activate  ' wenn Urlaubsbeginn im 2. Haljahr Tabellenblatt aktivieren
    sp = 1                                                      ' Startwert für Do-While-Schleife
    Do While Cells(3, sp) <> dat                                ' Start Schleife (Urlausbeginn suchen)
        sp = sp + 1                                             ' Zähler um Wert 1 erhöhen
    Loop                                                        ' Wendepunkt für Schleife
sp2 = 1                                                         ' Startwert für Do-While-Loop-Schleife
Do While Cells(3, sp2) <> dat2                                  ' Start Schleife (Urlausende suchen)
    sp2 = sp2 + 1                                               ' Zähler um Wert 1 erhöhen
Loop                                                            ' Wendepunkt für Schleife
z = 4                                                           ' Startwert für Do-While-Schleife
Do While Cells(z, 1) <> Me.ComboBox1                            ' Start Schleife (Mitarbeiter suchen)
    z = z + 1                                                   ' Zähler um Wert 1 erhöhen
Loop                                                            ' Wendepunkt für Schleife
If dat3 > 0 Then GoTo Seitenwechsel                             ' wenn Urlaubsende im 2. Halbjahr gehe zur Unterroutine
    For r = sp To sp2                                           ' sonst Schleifenstart für Tabelleneintrag
        Cells(3, r).Select                                      ' Zellen selektieren
            If Cells(3, r).Interior.ColorIndex = 40 Then
            Cells(7, r).Value = "V"
            Else: End If
            If Format(Cells(5, r), "ddd") = "O" _
            Or Cells(2000, r) = 2 _
            Or Format(Cells(5, r), "ddd") = "O" Then GoTo sprung ' wenn Sonnabend oder Sonntag kein Eintrag
        Cells(z, r) = "Tu"                                       ' Eintrag für Urlaub
        ut = ut + 1
        TextBox3 = "Es werden " & ut & " Urlaubstage" & Chr(13) & "benötigt"
sprung:                                                         ' Sprungziel (wenn kein Eintrag)
    Next r                                                      ' Schleifenzähler
    Exit Sub                                                    ' Programmende, wenn Urlaub nur im 1. Halbjahr
Seitenwechsel:                                                  ' Sprungziel wenn Urlaubsanteile im 2. Halbjahr
For r = sp To sp2                                               ' Schleifenstart für Tabelleneintrag
    Cells(3, r).Select
    ' Zellen selektieren
        If Format(Cells(5, r), "ddd") = "O" _
        Or Format(Cells(5, r), "ddd") = "O" Then GoTo sprung1  ' wenn Sonnabend oder Sonntag kein Eintrag
    Cells(z, r) = "Tu"                                           ' Eintrag für Urlaub
    ut2 = ut2 + 1
sprung1:                                                        ' Sprungziel (wenn kein Eintrag)
Next r                                                          ' Schleifenzähler
Worksheets("2. Halbjahr").Activate                              ' Tabellenblatt 2 aktivieren
sp3 = 2                                                         ' Startwert für Do-While-Loop-Schleife
Do While Cells(3, sp3) <> dat3                                  ' Start Schleife (Urlausende suchen)
    sp3 = sp3 + 1                                               ' Schleifenzähler
Loop                                                            ' Wendepunkt für Schleife
For s = 2 To sp3                                                ' Schleifenstart für Tabelleneintrag
    Cells(3, s).Select                                          ' Zellen selektieren
        If Cells(3, r).Interior.ColorIndex = 40 Then
        Cells(7, r).Value = "V"
        Else: End If
        If Format(Cells(5, s), "ddd") = "O" _
        Or Format(Cells(5, s), "ddd") = "O" Then GoTo sprung2  ' wenn Sonnabend oder Sonntag kein Eintrag
    Cells(z, s) = "Tu"                                           ' Eintrag für Urlaub
    ut2 = ut2 + 1
        TextBox3 = "Es werden " & ut2 & " Urlaubstage" & Chr(13) & "benötigt"
sprung2:                                                        ' Sprungziel wenn kein Eintrag
Next s                                                          ' Schleifenzähler

End Sub

' Programmende


Private Sub CommandButton2_Click()
UserForm1.Hide                                                  ' UserForm schließen
End Sub



Gruß
Wolfgang


 

Beiträge aus den Excel-Beispielen zum Thema "Bedingte Formatierung"