Supportnet / Forum / Tabellenkalkulation
Makro lässt mich verzweifeln
Frage
Ich habe eine Exeltabelle für eine Maschinenbelegung erstellt. Die Tabelle besteht aus 2 Tabellenblättern. In einem der Tabellenblätter sind in Spalte „A“ alle Maschinen aufgelistet und in Spalte B gebe ich die Teilebezeichnung und in Spalte C ein Kürzel für das Werkstück ein, das auf der Maschine bearbeitet wird.
In dem anderen Tabellenblatt habe ich die ca. 40 Maschinen schematisch jeweils durch 3 umrahmte Zellen dargestellt. ( z:Bsp. Maschine 1: B1, B2, B3 Maschine 2: D1, D2, D3 ) In B1 steht Maschine 1 , in B2 kommt die Teilebezeichnung aus dem Eingabeblatt und in B3 ein Kürzel aus dem Eingabeblatt. Bis hierher alles kein Problem !!
Nun wäre es vorteilhaft wenn die ca. 7 verschiedenen Werkstücke jeweils eine Farbe in den Blatt mit dem Maschinenplan bei den Maschinen hinterlegen damit man auf einen Blick die Belegung der Maschinen erkennt. Zelle B2 und B3 werden z.Bsp. gelb für Werkstück 1 oder blau bei Werkstück 2 usw.
Die Teilebezeichnung ist wie folgt aufgebaut:
0B1 XXX XXX X
B12 XXX XXX X
02K XXX XXX X
0J2 XXX XXX X
hier reicht es wenn die ersten 3 Zeichen abgefragt werden und eine Farbe in B2 B3 hinterlegen
Also einfach gesagt wenn eine dieser Zeichenketten in z.Bsp. B2 - D2 - F2 ( Maschinenreihe 1 ) und B10 - D10 - F10 ( Maschinenreihe 2 ) steht soll diese Zelle und die direkt darunter eingefärbt werden.
Vielleicht habe ich ja Glück und jemand kann helfen, Ich jedenfalls bin mit meinen Möglichkeiten am Ende. Dank an die Helfer hier im Support im Voraus !!
Antwort 1 von coros
Moin Kurt Jürgens,
ich glaube zwar, dass ich nicht so richtig verstanden habe, was Du möchtest, aber trotzdem habe ich Dir mal eine Lösung erstellt. Eventuell habe ich ja doch verstanden, was Du erreichen möchtest. Kopiere nachfolgenden Code in das VBA Projekt des Tabellenblatts, in dem die Daten eingegeben werden und bei der die Zellefarbe sich ändern soll.
Bei diesem Code wird immer, wenn ein Eintrag getätigt wird, der Eintrag ausgewertet. Wenn die ersten drei Buchstaben oder Zahlen gleich der Buchstaben/Zahlenkombination die hinter den Case-Anweisungen steht, dann wird die und die Zelle darunter entsprechend der Farbindexzahl eingefärbt.
Ich habe den Code mal für die Vier Zahlen/Buchstabenkombination aus Deiner Frage erstellt. Wenn Du noch weitere benötigst, dann kopiere die Zeilen
Case "Zahlen/Buchstabenkombination"
Range(Cells(Target.Row, Target.Column), _
Cells(Target.Row + 1, Target.Column)).Interior.ColorIndex = 6
, füge sie vor der Anweisung Else wieder ein und ändere den Text „Zahlen/Buchstabenkombination“ gegen Deine Kombination und vergebe eine andere Farbindexzahl. Die Farbindexzahlen erhälst Du mit nachfolgendem Makro, welches Du in ein StandardModul kopieren musst und es dann in einem separaten Tabellenblatt ausführen solltest.
End Sub
So, ich hoffe, dass Dir der obige VBA Code etwas weiterhilft. Bei Fragen, Problemen oder wenn ich mit meiner Lösung wirklich Meilenweit neben Deiner Frage liegen sollte, dann melde Dich.
MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
ich glaube zwar, dass ich nicht so richtig verstanden habe, was Du möchtest, aber trotzdem habe ich Dir mal eine Lösung erstellt. Eventuell habe ich ja doch verstanden, was Du erreichen möchtest. Kopiere nachfolgenden Code in das VBA Projekt des Tabellenblatts, in dem die Daten eingegeben werden und bei der die Zellefarbe sich ändern soll.
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Cells.Count > 1 Then Exit Sub ´Wenn mehr als eine Zelle markiert wurde dann Makro beenden
Select Case Mid(Target.Value, 1, 3)
Case "0B1"
Range(Cells(Target.Row, Target.Column), _
Cells(Target.Row + 1, Target.Column)).Interior.ColorIndex = 3
Case "B12"
Range(Cells(Target.Row, Target.Column), _
Cells(Target.Row + 1, Target.Column)).Interior.ColorIndex = 4
Case "02K"
Range(Cells(Target.Row, Target.Column), _
Cells(Target.Row + 1, Target.Column)).Interior.ColorIndex = 5
Case "0J2"
Range(Cells(Target.Row, Target.Column), _
Cells(Target.Row + 1, Target.Column)).Interior.ColorIndex = 6
Case Else
Target.Interior.ColorIndex = xlNone
End Select
End SubBei diesem Code wird immer, wenn ein Eintrag getätigt wird, der Eintrag ausgewertet. Wenn die ersten drei Buchstaben oder Zahlen gleich der Buchstaben/Zahlenkombination die hinter den Case-Anweisungen steht, dann wird die und die Zelle darunter entsprechend der Farbindexzahl eingefärbt.
Ich habe den Code mal für die Vier Zahlen/Buchstabenkombination aus Deiner Frage erstellt. Wenn Du noch weitere benötigst, dann kopiere die Zeilen
Case "Zahlen/Buchstabenkombination"
Range(Cells(Target.Row, Target.Column), _
Cells(Target.Row + 1, Target.Column)).Interior.ColorIndex = 6
, füge sie vor der Anweisung Else wieder ein und ändere den Text „Zahlen/Buchstabenkombination“ gegen Deine Kombination und vergebe eine andere Farbindexzahl. Die Farbindexzahlen erhälst Du mit nachfolgendem Makro, welches Du in ein StandardModul kopieren musst und es dann in einem separaten Tabellenblatt ausführen solltest.
Sub Farbindestabelle_erstellen()
Application.ScreenUpdating = False
Dim Zeile As Byte
For Zeile = 1 To 56
If Zeile < 29 Then
Cells(Zeile, 1) = Zeile
Cells(Zeile, 3) = Zeile
Cells(Zeile, 4) = Zeile
Cells(Zeile, 2).Interior.ColorIndex = Zeile
Cells(Zeile, 3).Font.ColorIndex = Zeile
Cells(Zeile, 4).Font.ColorIndex = Zeile
Else
Cells(Zeile - 28, 6) = Zeile
Cells(Zeile - 28, 8) = Zeile
Cells(Zeile - 28, 9) = Zeile
Cells(Zeile - 28, 7).Interior.ColorIndex = Zeile
Cells(Zeile - 28, 8).Font.ColorIndex = Zeile
Cells(Zeile - 28, 9).Font.ColorIndex = Zeile
End If
Next ZeileEnd Sub
So, ich hoffe, dass Dir der obige VBA Code etwas weiterhilft. Bei Fragen, Problemen oder wenn ich mit meiner Lösung wirklich Meilenweit neben Deiner Frage liegen sollte, dann melde Dich.
MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

