Über Dropdownfeld Farbe mehrerer Spalten ändern

  • #1
M

manuel_bo

Aktives Mitglied
Themenersteller
Dabei seit
26.08.2007
Beiträge
29
Reaktionspunkte
0
Hallo,

würde mir gern in einer Exeldatei in der vordersten Spalte ein Feld mit 3 Auswählmöglichkeiten erstellen.
1: in Arbeit
2: erlegigt
3: vorgemerkt

nun sollen die dahinterliegenden Spalten ihre farbe in abhängigkeit des statuses ändern.
z.B. in Arbeit grün (z.B. A16-H16) soll grün werden.

Ist das möglich? wie geht das?

danke

Gruß

Manuel
 
  • #2
Hallo manuel_bo,

das funktioniert über Gültigkeit und einen Makro.

zunächst hab ich dir ein Makro erstellt, mit dem die Gültigkeit in Spalte A gesetzt wird.
Code:
Sub GueltigkeitInSpalteASetzen()

-> entspricht
-> Daten->Gültigkeit...->Reiter Einstellungen
-> Zulassen: Liste
-> Leere Zellen ignorieren: Haken
-> ZellendropDown     : Haken
-> Quelle         : in Arbeit;erledigt;vorgemerkt
 
 Const cSP_AUSWAHL = 1-> entspricht Spalte A
 
 With ActiveSheet.Columns(1).Validation
    .Delete
    .Add Type:=xlValidateList, _
       AlertStyle:=xlValidAlertStop, _
       Operator:=xlBetween, _
       Formula1:=in Arbeit,erledigt,vorgemerkt
    .IgnoreBlank = True
    .InCellDropdown = True
    .InputTitle = 
    .ErrorTitle = 
    .InputMessage = 
    .ErrorMessage = 
    .ShowInput = True
    .ShowError = True
 End With
End Sub

Wenn dieses Makro gelaufen oder in Arbeit;erledigt;vorgemerkt von Hand als Gültigkeit für Spalte A eingegeben ist, kann es weiter gehen.

Folgendes Makro muß in die Code-Seite des Tabellenblattes kopiert werden.
Code-Seite ist erreichbar per->Blattlasch->rechte Maustaste->Code anzeigen
Code:
Option Explicit
Private Const cSP_AUSWAHL = 1-> entspricht Spalte A

Private Sub Worksheet_Change(ByVal Target As Range)
 Dim Zelle As Range
 For Each Zelle In Target
  If Zelle.Column = cSP_AUSWAHL Then
   Call FarbeDerZeileEntsprechendStringSetzen(Zelle)
  End If
 Next
 Set Zelle = Nothing
End Sub

Private Function FarbeDerZeileEntsprechendStringSetzen(Zelle As Range)

 Dim ws As Worksheet, r As Range
 Dim lLetzteSpalte As Long, lFarbIndex As Long
 Dim txt As String
 
 Set ws = Zelle.Parent
 lLetzteSpalte = ws.UsedRange.Columns.Count + ws.UsedRange.Column - 1
 Set r = ws.Range(ws.Cells(Zelle.Row, 1), ws.Cells(Zelle.Row, lLetzteSpalte))
 txt = Zelle.Value
 Select Case txt
  Case :       lFarbIndex = xlColorIndexNone->keine
  Case in Arbeit:  lFarbIndex = 38       ->hellrosa
  Case erledigt:   lFarbIndex = 35       ->hellgruen
  Case vorgemerkt:  lFarbIndex = 6       ->gelb
  Case Else:
  ->unzulässiger Wert -> löschen
   Application.EnableEvents = False
   Zelle.Value = 
   Application.EnableEvents = True
   lFarbIndex = xlColorIndexNone
 End Select
 r.Interior.ColorIndex = lFarbIndex
 Set ws = Nothing: Set r = Nothing
End Function

Gruß Matjes :)
 
  • #3
hallo

Danke für deine Mühe. Hat wunderbar geklappt
 
Thema:

Über Dropdownfeld Farbe mehrerer Spalten ändern

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.840
Beiträge
707.965
Mitglieder
51.494
Neuestes Mitglied
Flensburg45
Oben