Anzeige
Archiv - Navigation
1452to1456
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

Zeilen werden farblich markiert, wenn angewählt

Zeilen werden farblich markiert, wenn angewählt
21.10.2015 14:31:04
Golem
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 

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

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeilen werden farblich markiert, wenn angewählt
21.10.2015 17:32:50
Michael
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

Anzeige
AW: Zeilen werden farblich markiert, wenn angewählt
21.10.2015 19:11:05
Golem
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

Msgboxen einfügen
23.10.2015 15:20:09
Michael
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

Anzeige
AW: Msgboxen einfügen
24.10.2015 09:51:04
Golem
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

Vielen Dank für die freundliche Rückmeldung,
24.10.2015 17:46:30
Michael
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
Anzeige

197 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige