Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1352to1356
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Farben in Formen über Tabelle anpassen

Farben in Formen über Tabelle anpassen
03.04.2014 07:49:14
Lemmi
Hallo zusammen,
kann ich Formen unter Illustrationen bzw. dessen Inhaltsfarben mit zahlen steuern?
Ich möchte mit den Zahlen 0,1,2 und 3 die Illustrationen (Kreis und Rechteck) farblich anpassen.
Dazu habe ich Feldgruppen von 9 Formen (Kreis und Rechteck) gebildet.
In dieser Tabelle kann ich nun Zahlen eingeben, mit der Zahl (0,1,2,3) ändert sich je nach angebe die Frabe.
Ich habe bis zu 50 Feldgruppe die ich zuordnen muss.
Jeder Feldgruppe besteht aus 9 symbole
Damit sind bis zu 450 Merkmale die ich verteilen möchte
Ich habe hier eine Datei angefertigt.
Vieleicht gibt es ja auch eine andere Idee die etwas besser und einfacher umgesetzt werden könnte.
….nah wie auch immer ich bin mal gespannt ob es eine Lösung dafür gibt.
https://www.herber.de/bbs/user/89973.xlsx
Gruß
Lemmi

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Farben in Formen über Tabelle anpassen
07.04.2014 12:24:41
UweD
Hallo Lemmi
- Rechtsclick auf den Tabellenblattreiter.
- Code anzeigen
- Makro dort reinkopieren.
Zur Vorbereitung:
Alle Symbole müssen wie folgt benannt werden.
Feldxxy
xx Gruppe z.B. 01, 02, ... 50
y Feld 1 bis 8
Also "Feld018" für Gruppe 1, Rechteck links mit Nr. 8
- - - - -
Es wird nun der Bereich C10:K59 überwacht.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Feld As Integer
Dim Gruppe As String, Obj As String, Farbe As Integer
If Not Intersect(Range("C10:K59"), Target) Is Nothing Then
Select Case Target.Value
Case 0
Farbe = 9 'weiß
Case 1
Farbe = 11 'grün
Case 2
Farbe = 13 'gelb
Case 3
Farbe = 10 'rot
Case Else
MsgBox "Falscher Wert"
Target.Value = ""
Farbe = 12 'blau
End Select
Feld = Target.Column - 3
Gruppe = Format(Target.Row - 9, "00")
Obj = "Feld" & Gruppe & Feld
ActiveSheet.Shapes(Obj).Fill.ForeColor.SchemeColor = Farbe
End If
End Sub

Anzeige
AW: Farben in Formen über Tabelle anpassen
07.04.2014 12:29:21
fcs
Hallo Lemmi,
im Prinzip kann man so etwas machen.
Das setzt aber voraus, dass
1. die Elemente innerhalb der Gruppen-Objekte systematisch benannt werden z.B. Feld_0 bis Feld_8,
Dies muss man einmal für die Mustergruppe machen. Die Elementnamen bleiben beim Kopieren der Gruppen erhalten. Bei dir ist der Kreis in der Mitte übrigens noch nicht in den Gruppen.
2. die Gruppen systematisch so benannt werden, dass eine Zuordnung über die Tabelle möglich ist, z.B. Feldgruppe001, Feldgruppe002 usw.
Nachfolgend Makros, zur Änderung der Farbe in den Gruppenelementen.
Das Makro färbt jetzt die Gruppe zu der Zeile mit der aktiven Zelle um. Das kann man natürlich noch irgendwie anpassen.
Gruß
Franz
'Code in einem allgemeinen Modul
Sub prcGruppenFaerben()
'Gruppe zur Zeile mit der aktiven Zelle wird umgeformt.
Dim Zeile As Long
Zeile = ActiveCell.Row
Call prcGruppeFaerben(strGrpName:="Feldgruppe" & Format(Cells(Zeile, 2), "000"), _
rngFarben:=Range(Cells(Zeile, 3), Cells(Zeile, 11)))
End Sub
Sub prcGruppeFaerben(strGrpName As String, rngFarben As Range)
Dim objGruppe As Shape, objShape As Shape, intI
On Error GoTo Fehler
Set objGruppe = rngFarben.Parent.Shapes(strGrpName)
For intI = 0 To 8
Set objShape = objGruppe.GroupItems("Feld_" & intI)
Select Case rngFarben.Cells(1, intI + 1)
Case 0
objShape.Fill.Visible = False
Case 1
objShape.Fill.Visible = True
objShape.Fill.ForeColor.RGB = RGB(0, 176, 80) 'dunkel grün
Case 2
objShape.Fill.Visible = True
objShape.Fill.ForeColor.RGB = RGB(255, 255, 0) 'gelb
Case 3
objShape.Fill.Visible = True
objShape.Fill.ForeColor.RGB = RGB(255, 0, 0) 'rot
End Select
Next intI
Fehler:
With Err
Select Case .Number
Case 0 'do nothing
Case Else
MsgBox "Fehler-Nr.: " & .Number & vbLf & .Description & vbLf _
& "Gruppen-Name Shape: " & strGrpName & vbLf _
& "  oder " & vbLf _
& "Gruppenelement: Feld_" & intI
End Select
End With
End Sub

Anzeige
Farben in Formen über Tabelle anpassen
08.04.2014 08:54:21
Lemmi
Hallo Franz,
die Feldgruppen habe ich neu benannt
Die Feldnamen habe ich auch neu benannt.
Beispielhaft habe ich jetzt
Ab C8
Feldgruppe001
Feldgruppe002
Feldgruppe003
Feldgruppe004
aufgestellt.
Feldname: D8-L
Mir sit noch nicht klar wie ich das beeinflussen bzw. zuordnen kann.
Es kommt die Fehlermeldung:
Das Element mit dem angegbenen Namen wurde nciht gefunden
Gruppe-Name Shape: Feldgruppe
oder
Gruppeelement: Feld
Könntest Du noch einmal schauen?
https://www.herber.de/bbs/user/90029.xlsm
Gruß
Lemmi

Anzeige
AW: Farben in Formen über Tabelle anpassen
08.04.2014 23:40:05
fcs
Hallo Lemmi,
in deiner 1. Beispieldatei hattest du den Namen und die Zählnummer auf die Spalten B und C verteilt. Jetzt steht der Gruppenname komplett in Spalte C.
Bei der Zählnummer der Elemente in einer Gruppe hast du zusätzlich eine 0 eingebaut.
Deshalb konnte mein Code mit deiner neuen Datei nicht funktionieren.
Nachfolgend der Code angepasst an deine neue Datei.
Gruß
Franz
'Code in einem allgemeinen Modul
Sub prcGruppenFaerben()
'Gruppe zur Zeile mit der aktiven Zelle wird umgeformt.
Dim Zeile As Long
Zeile = ActiveCell.Row
Call prcGruppeFaerben(strGrpName:=Cells(Zeile, 3).Text, _
rngFarben:=Range(Cells(Zeile, 4), Cells(Zeile, 12))) ' ### geändert !
End Sub
Sub prcGruppeFaerben(strGrpName As String, rngFarben As Range)
Dim objGruppe As Shape, objShape As Shape, intI
On Error GoTo Fehler
Set objGruppe = rngFarben.Parent.Shapes(strGrpName)
For intI = 0 To 8
Set objShape = objGruppe.GroupItems("Feld_" & Format(intI, "00"))  '### geändert!!
Select Case rngFarben.Cells(1, intI + 1)
Case 0
objShape.Fill.Visible = False
Case 1
objShape.Fill.Visible = True
objShape.Fill.ForeColor.RGB = RGB(0, 176, 80) 'dunkel grün
Case 2
objShape.Fill.Visible = True
objShape.Fill.ForeColor.RGB = RGB(255, 255, 0) 'gelb
Case 3
objShape.Fill.Visible = True
objShape.Fill.ForeColor.RGB = RGB(255, 0, 0) 'rot
End Select
Next intI
Fehler:
With Err
Select Case .Number
Case 0 'do nothing
Case Else
MsgBox "Fehler-Nr.: " & .Number & vbLf & .Description & vbLf _
& "Gruppen-Name Shape: " & strGrpName & vbLf _
& "  oder " & vbLf _
& "Gruppenelement: Feld_" & intI
End Select
End With
End Sub

Anzeige
AW: Farben in Formen über Tabelle anpassen
09.04.2014 07:41:30
Lemmi
Hallo Franz,
jetzt ist mir klar wie das Makro funktioniert!
Die Fehlermeldung kommt immer dann wenn ich den Mouse- Curser nicht in der jewaligen Zeile habe.
Es wird "nur" die jewalige Feldgruppe nach dem Start des Makros aktualiesiert.
Es wäre schön wenn Du vieleicht das Makro nochmals anpasen könntest.
Also wird eine Zahl eingegeben/ verändert würde ich gerne dirkt den Farbumschlag sehen wollen.
Ist das noch möglich anzupassen?
Gruß
Lemmi

AW: Farben in Formen über Tabelle anpassen
09.04.2014 10:43:20
fcs
Hallo Lemmi,
das erfordert dann ein entsprechendes Ereignismakro, das auf Eingaben in Zellen reagiert.
Außerdem muss die geänderte Gruppe dann jeweils in den sichtbaren Bereich gescrollt werden.
Bitte beacte die Hinweise, wo die jeweiligen Makros in der Datei angelegt werden müssen.
Gruß
Franz
'Code unter dem Tabellenmodul der Tabelle mit den sich ändernden Zellen
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Zeile As Long, rngRow As Range
With Target
Select Case .Column
Case 4 To 12 'Spalten D bis L
'geänderte Zeilen abarbeiten
For Each rngRow In Target.Rows
Zeile = rngRow.Row
Select Case Zeile
Case 8 To 27 'Zeilenbereich mit Werten zu feldgrupen
'prüfen, ob GruppeName eingetragen und Farbwerte für alle 9 Felder eingetragen
If Cells(Zeile, 3)  "" And _
Application.WorksheetFunction.Count(Range(Cells(Zeile, 4), _
Cells(Zeile, 12))) = 9 Then
Call prcGruppeFaerben(strGrpName:=Cells(Zeile, 3).Text, _
rngFarben:=Range(Cells(Zeile, 4), Cells(Zeile, 12)))
Application.ScreenUpdating = True
If MsgBox("zurück zur aktiven Zelle", _
vbQuestion + vbYesNo, _
"Anzeige Gruppe: " & Cells(Zeile, 3).Text) = vbYes Then
ActiveCell.Select
ActiveWindow.ScrollColumn = 1
End If
End If
Case Else
'do nothing
End Select
Next rngRow
Case Else
'do nothing
End Select
End With
End Sub
'Code in einem allgemeinen Modul oder im gleichen Modul wie obiges Ereignismakro
Sub prcGruppeFaerben(strGrpName As String, rngFarben As Range)
Dim objGruppe As Shape, objShape As Shape, intI
On Error GoTo Fehler
Set objGruppe = rngFarben.Parent.Shapes(strGrpName)
'Gruppe in den sichtbaren Bereich scrollen
ActiveWindow.ScrollRow = objGruppe.TopLeftCell.Row  '### neu!!
ActiveWindow.ScrollColumn = objGruppe.TopLeftCell.Column  '### neu!!
For intI = 0 To 8
Set objShape = objGruppe.GroupItems("Feld_" & Format(intI, "00"))
Select Case rngFarben.Cells(1, intI + 1)
Case 0
objShape.Fill.Visible = False
Case 1
objShape.Fill.Visible = True
objShape.Fill.ForeColor.RGB = RGB(0, 176, 80) 'dunkel grün
Case 2
objShape.Fill.Visible = True
objShape.Fill.ForeColor.RGB = RGB(255, 255, 0) 'gelb
Case 3
objShape.Fill.Visible = True
objShape.Fill.ForeColor.RGB = RGB(255, 0, 0) 'rot
End Select
Next intI
Fehler:
With Err
Select Case .Number
Case 0 'do nothing
Case Else
MsgBox "Fehler-Nr.: " & .Number & vbLf & .Description & vbLf _
& "Gruppen-Name Shape: " & strGrpName & vbLf _
& "  oder " & vbLf _
& "Gruppenelement: Feld_" & intI
End Select
End With
End Sub

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige