Zeilen werden farblich markiert, wenn angewählt

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
MsgBox
Bild

Betrifft: Zeilen werden farblich markiert, wenn angewählt
von: Golem
Geschrieben am: 21.10.2015 14:31:04

Hallo Excel-Fachleute,
um Zeilen farblich zu markieren, habe ich von Herrn Oliver Scheckelhoff, Berlin, eine Beispielsdatei.
Diese Beispielsdatei funktioniert für meinen Anwendungsfall einwandfrei.
Um zu verstehen wie der VBA-Code funktioniert, versuche ich den Aufbau nachzuvollziehen.
Code im Modul
Option Explicit
'==========================================================================================
'Hier wird mit der ersten Zahl für die zu markierende Lange eingegeben. In diesem Beispiel
'wird die zeile bis zur Spalte AZ markiert.
'==========================================================================================
Public Wertvorgaben(53, 3, 3) As String ' 1=Zellenlänge; 2=Zelle; 3= Register
Public Wiederholungen As Integer
Public Markierung_an_aus As Integer
Sub Zeilenmarkierung_an_aus()
Zurück
'==========================================================================================
'Hier wird die Variable, die oben deklariert wurde, auf 0 oder 1 gesetzt. Sie dient zum
'Ein- bzw. Ausschalten der Zeilenmarkierung.
'==========================================================================================
If Markierung_an_aus = 0 Then
Markierung_an_aus = 1
ElseIf Markierung_an_aus = 1 Then
Markierung_an_aus = 0
End If
End Sub Sub Zurück()
If Markierung_an_aus = 0 Then
If Wertvorgaben(1, 1, 1) <> "" Then
For Wiederholungen = 1 To 52
If Worksheets(Wertvorgaben(Wiederholungen, 3, 3)).Range(Wertvorgaben(Wiederholungen, 2, 2)). _
Interior.ColorIndex = 35 Then 'Hier muss die Farbe, die
'die Zeile annehmen soll geändert
'werden
Worksheets(Wertvorgaben(Wiederholungen, 3, 3)).Range(Wertvorgaben(Wiederholungen, 2, 2)). _
Interior.ColorIndex = CInt(Wertvorgaben(Wiederholungen, 1, 1))
End If
Next Wiederholungen
End If
End If
End Sub
Code in "Diese Arbeitsmappe" ( ist von mir verändert worden )
Option Explicit

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Zurück
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Markierung_an_aus = 0
End Sub

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Zurück
If (ActiveCell.Row >= 5 And ActiveCell.Row <= 50) Then
If ActiveCell.Column = 9 Then Auslesen
End If
End Sub


Sub Zurück()
If Markierung_an_aus = 0 Then
If Wertvorgaben(3, 1, 1) <> "" Then
For Wiederholungen = 3 To 9
If Worksheets(Wertvorgaben(Wiederholungen, 3, 3)).Range(Wertvorgaben(Wiederholungen, 2, 2)).Interior.ColorIndex = 6 Then 'Hier muss die Farbe, geändert werden.....
Worksheets(Wertvorgaben(Wiederholungen, 3, 3)).Range(Wertvorgaben(Wiederholungen, 2, 2)).Interior.ColorIndex = CInt(Wertvorgaben(Wiederholungen, 1, 1))
End If
Next Wiederholungen
End If
End If
End Sub

Sub Auslesen()
If Markierung_an_aus = 0 Then
For Wiederholungen = 3 To 9
'Werte auslesen
Wertvorgaben(Wiederholungen, 1, 1) = Cells(ActiveCell.Row, Wiederholungen).Interior.ColorIndex
Wertvorgaben(Wiederholungen, 2, 2) = Cells(ActiveCell.Row, Wiederholungen).Address
Wertvorgaben(Wiederholungen, 3, 3) = ActiveSheet.Name
Cells(ActiveCell.Row, Wiederholungen).Interior.ColorIndex = 6 'Hier muss die Farbe, die
'die Zeile annehmen soll geändert
'werden
Next Wiederholungen
End If
End Sub
Wer kann mir erklären, wie sich "Wertvorgaben(9, 3, 3) As String" zusammensetzt bzw. die Bedeutung allgemein
und die Bedeutung innerhalb der Klammer.
Schon mal besten Dank!
Werner

Bild

Betrifft: AW: Zeilen werden farblich markiert, wenn angewählt
von: Michael
Geschrieben am: 21.10.2015 17:32:50
Hi Werner,
das können wir Dir so nicht sagen, weil wir nicht wissen, welche Daten bei Dir eingelesen werden.
Definiert ist Wertvorgaben schlicht als dreidimensionales Array, das einzelne Strings enthält; das ist die Zeile ziemlich oben:

Public Wertvorgaben(53, 3, 3) As String ' 1=Zellenlänge; 2=Zelle; 3= Register

Näheres zu Arrays kannst Du hier nachlesen: http://www.online-excel.de/excel/singsel_vba.php?f=152
Das Array "Wertvorgaben" wird in der Sub Auslesen mit Werten gefüllt, und zwar in den Zeilen:
Wertvorgaben(Wiederholungen, 1, 1) = Cells(ActiveCell.Row, Wiederholungen).Interior.ColorIndex
Wertvorgaben(Wiederholungen, 2, 2) = Cells(ActiveCell.Row, Wiederholungen).Address
Wertvorgaben(Wiederholungen, 3, 3) = ActiveSheet.Name
Im Kommentar oben steht zwar "1=Zellenlänge", aber offensichtlich wird hier die Hintergrundfarbe der Zelle übernommen.
Hilft das erst Mal?
Schöne Grüße,
Michael

Bild

Betrifft: AW: Zeilen werden farblich markiert, wenn angewählt
von: Golem
Geschrieben am: 21.10.2015 19:11:05
Hallo Michael,
einen schönen Dank für Deine Ausführung.
Ich habe bisher herausgefunden, dass mit Zellenlänge die erste farbige Zelle ( z.B. 1. Zelle in der Spalte3 ) und die letzte farbige Zelle
( z. B. Zelle in der Spalte 53 ) angegeben wird; also Zellen-Array 3 bis 53.
Unter "2=Zelle" und "3=Register" kann ich mir nichts vorstellen.
Erkenntnis, ich muss noch jede Menge lernen.
Schöne Grüße
Werner

Bild

Betrifft: Msgboxen einfügen
von: Michael
Geschrieben am: 23.10.2015 15:20:09
Hi Werner,
in "2=Zelle" steht die Adresse der Zelle, und "Register" ist der Name des Tabellenblatts.
Setze doch mal testhalber eine MsgBox unter die drei Zeilen mit den Zuweisungen:

' vorhanden Zuweisungen:
Wertvorgaben(Wiederholungen, 1, 1) = Cells(ActiveCell.Row, Wiederholungen).Interior.ColorIndex
Wertvorgaben(Wiederholungen, 2, 2) = Cells(ActiveCell.Row, Wiederholungen).Address
Wertvorgaben(Wiederholungen, 3, 3) = ActiveSheet.Name
'einzufügende Ausgabe:
MsgBox Wertvorgaben(Wiederholungen, 1, 1) & " ! " & Wertvorgaben(Wiederholungen, 2, 2) & _
       " ! " & Wertvorgaben(Wiederholungen, 3, 3)

dann kannst Du vielleicht besser nachvollziehen, was hier passiert.
Schöne Grüße,
Michael

Bild

Betrifft: AW: Msgboxen einfügen
von: Golem
Geschrieben am: 24.10.2015 09:51:04
Hallo Michael,
Du bist der Beste!
Dein Vorschlag bringt mir sehr viel, um mehr Verständnis für den Code zu bekommen.
Damit werde ich mich eine Weile auseinandersetzen.
Schönen Dank!
Werner

Bild

Betrifft: Vielen Dank für die freundliche Rückmeldung,
von: Michael
Geschrieben am: 24.10.2015 17:46:30
Werner,
die MsgBoxen sind nur eine von mehreren Möglichkeiten.
Eine weitere ist, stattdessen debug.print zu verwenden, dann erscheint keine MsgBox, sondern die Ausgabe erfolgt im sogenannten Direktfenster, das Du mit Strg+g (im VB-Editor) aktivieren kannst.
Darüberhinaus kann man den Code mit der F8-Taste zeilenweise ausführen lassen. Das schöne dabei ist, daß man während der Ausführung problemlos ins Tabellenblatt wechseln kann, um zu sehen, was das Makro gerade dort gemacht hat, und, was fast noch wichtiger ist, man kann die Maus über eine Variable ziehen (z.B. wiederholungen) und bekommt den Inhalt angezeigt.
Insgesamt lohnt sich eine Beschäftigung mit dem VB-Editor, dem Debugger usw., wenn man etwas tiefer einsteigen möchte.
Viel Spaß beim Exceln, Gruß,
Michael

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Zeilen werden farblich markiert, wenn angewählt "