Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

VBA- Aktive farbe, Codevervollständigung
#1
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
Antworten Top
#2
Moin!
Lege (dynamisch mittels VBA) eine bedingte Formatierung über die Zellen.
Dann braucht sich nix gemerkt zu werden.

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
[-] Folgende(r) 1 Nutzer sagt Danke an RPP63 für diesen Beitrag:
  • Niko
Antworten Top
#3
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.
Antworten Top
#4
Bin unterwegs. 
Ich lade nachher mal ein Beispiel hoch.

Aber quid pro quo.
Zeige mal Deine Datei.
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
[-] Folgende(r) 1 Nutzer sagt Danke an RPP63 für diesen Beitrag:
  • Niko
Antworten Top
#5
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
[-] Folgende(r) 1 Nutzer sagt Danke an NobX für diesen Beitrag:
  • Niko
Antworten Top
#6
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
[-] Folgende(r) 1 Nutzer sagt Danke an Gast 123 für diesen Beitrag:
  • Niko
Antworten Top
#7
danke für den Code, aber bin damit überfordert...wie soll es auf alle arbeitsblätter funktionieren?
Antworten Top
#8
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
[-] Folgende(r) 1 Nutzer sagt Danke an Gast 123 für diesen Beitrag:
  • Niko
Antworten Top
#9
Hallo Niko,

vielleicht findet Ralf es nicht mehr. 05

Siehe z.B. hier.

Gruß Uwe
[-] Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:
  • Niko
Antworten Top
#10
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
[-] Folgende(r) 1 Nutzer sagt Danke an derHoepp für diesen Beitrag:
  • Niko
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste