Clever-Excel-Forum

Normale Version: VBA- Aktive farbe, Codevervollständigung
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo an alle Smile

brauche hilfe für den darunteren VBA Code.
Das Blatt hat viele Zellen, die eine Füllfarbe haben - der Code ändert die Füllfarbe von der aktiven Zelle (der Zelle, die die Schreibtischnummer enthält) - ändert sie derzeit von Grün zu Gelb - ich möchte nur die eine Zelle zurück zu Grün.
Die Desk Number wird als Variable (deskNo) gespeichert und mein laienhafter gedanke, Code zu verwenden, um zu sagen, ob die aktive Zelle nicht gleich deskNo ist - Zellenfarbe = Gelb - aber bin mir nicht sicher, wie man diesen Code schreibt oder wo man ihn platziert?

Code:
Sub FindDesk()
Dim deskNo As String

deskNo = ActiveCell
'MsgBox deskNo
    If Left(deskNo, 1) = 1 Then
        Sheets("Erster Stock").Select
                Cells.Find(What:=deskNo, After:=ActiveCell, LookIn:=xlFormulas2, LookAt:= _
                xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
                , SearchFormat:=False).Activate
               
        ActiveCell.Interior.Color = vbGreen

    ' ICH BENÖTIGE HIER EINEN CODE, UM DIE ZELLE AUF DEN URSPRÜNGLICHEN HINTERGRUND ZURÜCKZUSETZEN, WENN ES NICHT DIE AKTIVE ZELLE IST

   Else
                If Left(deskNo, 1) = 2 Then
                    Sheets("Zweiter Stock").Select
                        Cells.Find(What:=deskNo, After:=ActiveCell, LookIn:=xlFormulas2, LookAt:= _
                        xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
                        , SearchFormat:=False).Activate
        Else
                            If Left(deskNo, 1) = 4 Then
                                Sheets("Vierter Stock").Select
                                    Cells.Find(What:=deskNo, After:=ActiveCell, LookIn:=xlFormulas2, LookAt:= _
                                    xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
                                    , SearchFormat:=False).Activate
    End If
                End If
                            End If
End Sub

Hoffe das ich mich verständlich genug gemacht habe und jemand mir helfen kann Smile

Danke
Moin!
Lege (dynamisch mittels VBA) eine bedingte Formatierung über die Zellen.
Dann braucht sich nix gemerkt zu werden.

Gruß Ralf
Danke, auf Anhieb eine wunderschöne Idee...ist es möglich ein Beispiel Code zu senden den ich einbauen könnte?
...als Laie ist mein VBA wissen eigener Massen limitiert (milde ausgedrückt Smile ).
 

Danke.
Bin unterwegs. 
Ich lade nachher mal ein Beispiel hoch.

Aber quid pro quo.
Zeige mal Deine Datei.
Hallo,

vielleicht hilft Dir dieses Beispiel etwas weiter, welches Du auf Deinen Code umschreiben könntest:

Code:
Sub FindDesk()
Dim deskNo As String
Dim meinBereich As Range

Set meinBereich = Tabelle1.Range("A1:F20") 'anpassen
meinBereich.Interior.ColorIndex = 5 'alle Zellen im Bereich werden auf die
                                    ' ursprüngliche Hintergrundfarbe festgelegt, - anpassen!
deskNo = ActiveCell

    If Left(deskNo, 1) = 1 Then
        With Tabelle1 'anpassen
        'Die Farbe der aktiven Zelle festlegen
        ActiveCell.Interior.ColorIndex = 9 'anpassen
        End With
        Else ' nicht erforderlich
    End If
End Sub

Teste einmal damit, ob Dir das weiterhilft, die Bereiche und Farbvorgaben musst Du ensprechend anpassen, wie Du es brauchst.

Grüße
NobX
Hallo

wie ich sehe gibt es schon Lösungen, mal ein entwurf von mir. Mein Tipp:
Wenn man in mehreren Sheets sucht legt man zuerst das Sheet fest!
Dann braucht man Cells.Find nur einmal zu programmieren!
PS Gibt es bei euch keinen "Dritten Stock"??

mfg Gast 123

Sub FindDesk()
Dim deskNo As String, Blatt As String
deskNo = ActiveCell
'MsgBox deskNo

If Left(deskNo, 1) = 1 Then Sheets("Erster Stock").Select
If Left(deskNo, 1) = 2 Then Sheets("Zweiter Stock").Select
If Left(deskNo, 1) = 3 Then Sheets("Dritter Stock").Select
If Left(deskNo, 1) = 4 Then Sheets("Vierter Stock").Select

Set rfind = Cells.Find(What:=deskNo, After:=ActiveCell, LookIn:=xlFormulas2, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False)

If Not rfind Is Nothing Then
ActiveCell.Interior.Color = vbGreen
Else
ActiveCell.Interior.Color = vbYellow
End If

End Sub
danke für den Code, aber bin damit überfordert...wie soll es auf alle arbeitsblätter funktionieren?
Hallo

eine einfache Änderung deines Codes ist nur, das ich zuerst das gewünschte Sheet mit Select auswaehle!
Dannach findet der Suchlauf wie vorher im selektierten Sheet statt. Das ist alles.
Den Suchcode mit Cells.Find hast du doch dreimal programmiert, richtig???

mfg Gast 123
Hallo Niko,

vielleicht findet Ralf es nicht mehr. 05

Siehe z.B. hier.

Gruß Uwe
Hallo,

wenn ich das richtig verstanden habe, versuchst du eine Übersicht für DeskSharing zu erstellen. In jedem Fall empfiehlt es sich, Anzeige und Datenspeicherung zu trennen. Erstelle also eine einfache Liste, die die Felder Tisch, Besetzer, Datum enthält. Die grafischen Repräsentationen der Tische färbst du dann mit einer einfachen bedingten Formatierung.

Viele Grüße
derHöpp
Seiten: 1 2