Excel 2003 Mitarbeiterfarben

  • #1
J

joergi78

Bekanntes Mitglied
Themenersteller
Dabei seit
17.08.2005
Beiträge
249
Reaktionspunkte
0
Hallöchen an alle,
kann ich es in Excel2003 realisieren, dass immer die 1. Zelle einer Zeile je nach Benutzereingaben eine bestimmte Farbe bekommt???
z.B.:
Benutzer Franz trägt in die Zelle A2 was ein, nun wird in Zelle A1 der Text blau.
Benutzer Ilse trägt in die Zelle B2 was ein, nun wird in Zelle A2 der Text rot.
Benutzer Fritz trägt in die Zelle C2 was ein, nun wird in Zelle C2 der Text grün.
Bei Franz immer blau, bei Ilse immer rot und bei Fritz immer grün.
Die Benutzer greifen alle über das selbe Netzwerk auf die Datei zu.
wäre super wenn das geht.
mfg
Joergi78
 
  • #2
Hallo Joergi78,

also folgendes Maro überwacht das Tabellenblatt auf Änderung.
Bei Änderung wird in der ersten Zelle der Zeile der Farbhintergrund entsprechend dem Benutzer gesetzt.

Zuordnung Benutzer<->FarbIndex siehe makro <<< A N P A S S E N >>>.

Das Makro muß in der Code-Seite des Tabellen-Blattes liegen. Man erreicht die Code-Seite, indem man die Lasche des tabellenblattes anklickt -> rechte Maustaste -> Code anzeigen.
Code:
Private Sub Worksheet_Change(ByVal Target As Range)

 -><<<< A N P A S S E N >>>>>
  Const cBenutzer1 = Franz, cFarbIndex1 = 5 ->blau
  Const cBenutzer2 = Ilse, cFarbIndex2 = 3   'rot
  Const cBenutzer3 = Fritz, cFarbIndex3 = 10->gruen
  Const cFarbIndexUnbekannt = 7               ->rosa
 -><<<< A N P A S S E N   E N D E >>>>
  
  Dim Zelle As Range
  Dim lFarbeIndex As Long, sBenutzer As String
  
 ->Benutzer bestimmen
  sBenutzer = Application.UserName
 ->Farbe für Benutzer festlegen
  Select Case sBenutzer
    Case cBenutzer1: lFarbeIndex = cFarbIndex1
    Case cBenutzer2: lFarbeIndex = cFarbIndex2
    Case cBenutzer3: lFarbeIndex = cFarbIndex3
    Case Else:       lFarbeIndex = cFarbIndexUnbekannt
  End Select
  
 ->Zellehintergrund in der ersten Spalte setzen
  For Each Zelle In Target
    Target.Parent.Cells(Zelle.Row, 1).Interior.ColorIndex = lFarbeIndex
  Next
  
 ->aufraeumen
  Set Zelle = Nothing
End Sub

Gruß Matjes :)
 
  • #3
Super, das klappt soweit ganz gut,
ich habe den kompletten Benutzernamen genommen, aber er nimmt immer die Farne rosa von Unbekannt.
Const cFarbIndexUnbekannt = 7 ->rosa
warum???
 
  • #4
Hallo Joergi78,

zum Testen des Usernamens benutze folgendes Makro.
Code:
Sub Test_Username()
  MsgBox  & Application.UserName & 
End Sub
Laß Franz, Ilse und Fritz dieses Makro ausführen. Das, was es jeweils anzeigt, muß in der jeweiligen Konstanten cBenutzer... stehen. Sonst kommt eben immer Rosa / unbekannt.

Gruß Matjes :)
 
  • #5
jawoll, jetzt klappt es, kann ich das so anpassen, dass die Farbe nur vergeben wird, wenn in der Spalte D der Zeile was eingetragen wird?
 
  • #6
dann soll die die dementsprechende Zelle in Spalte A aber so bleiben
 
  • #7
Probier's mal damit:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)

-><<<< A N P A S S E N >>>>>
 Const cBenutzer1 = Franz, cFarbIndex1 = 5->blau
 Const cBenutzer2 = Ilse, cFarbIndex2 = 3 ->rot
 Const cBenutzer3 = Fritz, cFarbIndex3 = 10->gruen
 Const cFarbIndexUnbekannt = 7       ->rosa
-><<<< A N P A S S E N  E N D E >>>>
 
 Dim Zelle As Range
 Dim lFarbeIndex As Long, sBenutzer As String

->Berabeitung nur wenn in Spalte d
 Set Target = Application.Intersect(Target, Target.Parent.Columns(4))
 If Target Is Nothing Then Exit Sub
 
->Benutzer bestimmen
 sBenutzer = Application.UserName
->Farbe für Benutzer festlegen
 Select Case sBenutzer
  Case cBenutzer1: lFarbeIndex = cFarbIndex1
  Case cBenutzer2: lFarbeIndex = cFarbIndex2
  Case cBenutzer3: lFarbeIndex = cFarbIndex3
  Case Else:    lFarbeIndex = cFarbIndexUnbekannt
 End Select
 
->Zellehintergrund in der ersten Spalte setzen
 For Each Zelle In Target
  Target.Parent.Cells(Zelle.Row, 1).Interior.ColorIndex = lFarbeIndex
 Next
 
->aufraeumen
 Set Zelle = Nothing
End Sub

Gruß Matjes :)
 
  • #8
Jawoll Supi,

aber worfür ist bitte folgende Part???
Dim Zelle As Range
Dim lFarbeIndex As Long, sBenutzer As String

und der letzte???
'aufraeumen
Set Zelle = Nothing
 
  • #9
Die Dim .... Zeilen sind zur definition der verwendeten Variablen. Es geht zwar auch ohne, aber unter bestimmten Umständen können dann Fehler auftreten, die sehr schwer zu finden sind. Deshalb die Empfehlung immer die Option Explicit  einzuschalten, die eine n dazu zwingt die Variablen zu definieren.

zu Set Zelle = Nothing

Zelle ist eine Object-Variable, die im Code explizit freigegeben werden muß, damit die Garbadgecollection (Speicheraufräumer) sie wegräumt. Andernfalls entstehen kleine Speicherlöcher (Speicher bleibt belegt).

Gruß Majes :)
 
  • #10
ahhh
alles klar
Danke
 
Thema:

Excel 2003 Mitarbeiterfarben

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.838
Beiträge
707.959
Mitglieder
51.491
Neuestes Mitglied
haraldmuc
Oben