Anzeige
Archiv - Navigation
836to840
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
836to840
836to840
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Aktive Zellen und Spalten farbig

Aktive Zellen und Spalten farbig
21.01.2007 18:33:09
Fritschi
Hallo
Ich habe folgende Probleme.
1. Für Kalkulationen für Maschinenteile brauche ich ca. 230 Spalten. Die Spalten sind pro Abteilung in einer anderen Farbe. Es wird gewünscht, dass die aktive Zeile, wo die Daten für die Kalkulation eingegeben werden, eine andere Farbe bekommt. Ich habe einen Code gefunden, der mir immer die aktive Zeile und Spalte mit einer Farbe markiert, aber diese Makro lässt die vorhandenen Farben pro Abteilung verschwinden und der Hintergrund ist einfach weiss über die ganze Tabelle.
2. Wenn ich das Blatt schütze, dass andere Personen nur für sie berechtigte Zellen ausfüllen können, funktioniert es überhaupt nicht.
Danke für eine Lösung. Iris Fritschi

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Aktive Zellen und Spalten farbig
21.01.2007 20:14:15
Ramses
Hallo
":...pro Abteilung in einer anderen Farbe. ..."
Da wirst du Probleme haben, da EXCEL nur 56 Farben unterstützt :-)
Zeig mal den Code den du schon hast.
Alternativ beim SelectionChange Ereignis die bestehende Farbe und Zelladresse in einer globalen Variable zwischenspeichern, die du dann beim verlassen der Zelle wieder zurückschreiben kannst.
Gruss Rainer
AW: Aktive Zellen und Spalten farbig
21.01.2007 20:19:13
Werner
Hallo Iris
hilft dir in deinem Falle nicht ein Fadenkreuz. Der Hintergrund verschwindet nicht.
Die Datei ist auch aus dem Forum.
https://www.herber.de/bbs/user/39830.xls
Tschüs Werner
Anzeige
AW: Aktive Zellen und Spalten farbig
22.01.2007 12:02:49
Iris
Hallo Werner
Das Fadenkreuz wäre eine gute Lösung. Hast Du eventuell einen Code den ich kopieren könnte? Funktioniert das Fadenkreuz auch, wenn ein Blattschutz besteht und nur gewisse Zellen bearbeitet werden können? Leider sind meine VBA-Kenntnisse zu gering. Ich habe probiert einge Codes zu kopieren, aber es hat nicht funktioniert.
Danke für Deine Hilfe
Iris
AW: Aktive Zellen und Spalten farbig
22.01.2007 13:42:46
Iris
Hallo Werner
Das Fadenkreuz wäre eine gute Lösung. Hast Du eventuell einen Code den ich kopieren könnte? Funktioniert das Fadenkreuz auch, wenn ein Blattschutz besteht und nur gewisse Zellen bearbeitet werden können? Leider sind meine VBA-Kenntnisse zu gering. Ich habe probiert einge Codes zu kopieren, aber es hat nicht funktioniert.
Danke für Deine Hilfe
Iris
Anzeige
Danke für dein Desinteresse! ;-( owT
22.01.2007 14:46:08
Luc:-?
:-?
AW: Danke für dein Desinteresse! ;-( owT
22.01.2007 23:27:55
Iris
Hallo Luc
Danke für Deine Lösung. Ich habe es probiert und den Code kopiert, aber es hat nicht funktioniert. Ich glaube es liegt an mir. Meine VBA-Kenntnisse sind einfach noch zu gering. Die Lösung mit einem Fadenkreuz wäre auch eine Variante. Ich bin immer noch am Ausprobieren.
Freundliche Grüsse
Iris
AW: Danke für dein Desinteresse! ;-( owT
22.01.2007 23:28:10
Iris
Hallo Luc
Danke für Deine Lösung. Ich habe es probiert und den Code kopiert, aber es hat nicht funktioniert. Ich glaube es liegt an mir. Meine VBA-Kenntnisse sind einfach noch zu gering. Die Lösung mit einem Fadenkreuz wäre auch eine Variante. Ich bin immer noch am Ausprobieren.
Freundliche Grüsse
Iris
Anzeige
Du kannst davon ausgehen, dass es bei mir...
23.01.2007 17:23:24
ausgehen,
...ausgezeichnet fkt, Iris!
Wenn du alles so gemacht hast wie ich es (recht ausführlich) beschrieben habe, sollte es auch bei dir fkt. Wenn du aber alle diese Makros ins selbe Modul kopiert hast, solltest du meine Beschreibung noch mal lesen! Und Ereignisprozeduren sollten natürlich eingestellt sein, aber das ist ja Excel-Standard. Wenn du dazu noch eine Frage hast, weil du was nicht verstehst, dann stelle die hier.
Luc :-?
AW: Aktive Zellen und Spalten farbig - Lösung
22.01.2007 01:21:20
Luc:-?
Hallo Iris,
das sind 2 Probleme. Ich würde hier Ereignisprozeduren empfehlen. Damit die auch bei geschütztem Blatt fkt, müsstest du das Blatt auch per Ereignisprozedur schützen, damit Makros von der Einwirkungssperre ausgenommen wdn können, z.B so...

Option Explicit
Dim ws As Worksheet
Private Sub Worksheet_Activate()
Set ws = Me
ws.Protect password:="xyz", userinterfaceonly:=True
End Sub
Private Sub Worksheet_Deactivate()
Call ZeilenFarbe(ws, Nothing)
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Row <= endZl And Target.Column <= endSp And _
Target.Cells.Count <= endSp Then Call ZeilenFarbe(Me, Target)
End Sub 

Das Vorstehende ist in das (Klassen-)Modul des Tabellenblattes zu kopieren (im Editor-Projektfenster auf das Symbol des TabBlattes doppelklicken). Das Nachfolgende muss an den Anfang eines Standardmoduls kopiert wdn...

Option Explicit
Public Const endZl As Long = 65536, endSp = 256
Rem Autor: Luc\CyWorX - 1Pub=CDate: 20070121 on www.herber.de/forum
Sub ZeilenFarbe(ByVal tbl As Worksheet, ByVal ziel As Range)
Static OrZst As Boolean, lzFrb(255) As Integer, letztZeile As Long, _
blatt As Worksheet, zelle As Range
Const invZlFrb As Integer = 56
On Error GoTo ex
Application.EnableEvents = False
If Not tbl Is Nothing Then Set blatt = tbl
If blatt Is Nothing Then GoTo ex
If ziel Is Nothing Then
For Each zelle In Range(blatt.Cells(letztZeile, 1), _
blatt.Cells(letztZeile, endSp))
zelle.Interior.ColorIndex = lzFrb(zelle.Column - 1)
Next zelle
OrZst = True
ElseIf OrZst Or ziel.Row <> letztZeile Then
If letztZeile > 0 Then
For Each zelle In Range(blatt.Cells(letztZeile, 1), _
blatt.Cells(letztZeile, endSp))
zelle.Interior.ColorIndex = lzFrb(zelle.Column - 1)
lzFrb(zelle.Column - 1) = blatt.Cells(ziel.Row, _
zelle.Column).Interior.ColorIndex
With Cells(ziel.Row, zelle.Column).Interior
.ColorIndex = Abs(IIf(invZlFrb > 56, invZlFrb Mod 56, _
invZlFrb) - IIf(.ColorIndex < 0, 0, .ColorIndex))
End With
Next zelle
Else
For Each zelle In Range(blatt.Cells(ziel.Row, 1), _
blatt.Cells(ziel.Row, endSp))
lzFrb(zelle.Column - 1) = blatt.Cells(ziel.Row, _
zelle.Column).Interior.ColorIndex
With blatt.Cells(ziel.Row, zelle.Column).Interior
.ColorIndex = Abs(IIf(invZlFrb > 56, invZlFrb Mod 56, _
invZlFrb) - IIf(.ColorIndex < 0, 0, .ColorIndex))
End With
Next zelle
End If
OrZst = False
ElseIf letztZeile > 0 And ziel.Cells.Count > 1 Then
For Each zelle In Range(blatt.Cells(letztZeile, 1), _
blatt.Cells(letztZeile, endSp))
zelle.Interior.ColorIndex = lzFrb(zelle.Column - 1)
Next zelle
OrZst = True
End If
letztZeile = ziel.Row
ex: Application.EnableEvents = True
End Sub 

Die 3 Konstanten sind auf die Maxima bis xl2003 eingestellt, können aber nach Bedarf geändert wdn. Das gilt auch für invZlFrb. Dabei ist im Pgm abgesichert, dass Indexfarbe 56 nicht über- und 0 nicht unterschritten wdn kann. Weitere Änderungen sind nicht erforderlich.
Die Prozeduren reagieren auf Zeilen- und Blattwechsel. In beiden Fällen wird der Ausgangszustand der zuvor gewählten Zeile wiederhergestellt. Das geschieht auch, wenn mehr als 1 Zelle in der aktuellen Zeile ausgewählt wird, nicht aber, wenn die Anzahl der ausgewählten Zellen > endSp ist (nur wirksam, wenn hier max 255 eingestellt wird). Zellauswahlen außerhalb von endZl und endSp sind unwirksam. Wenn nach dem Aktivieren des TabBlattes eine Zelle (auch in der aktuellen Zeile, aber eine andere) ausgewählt wird, wdn die Zellen der 1.Spalten der Zeile bis endSp farblich pseudoinvertiert, d.h., es wird der Betragsdifferenzfarbindex aus invZlFrb und ursprünglichem Farbindex zur Farbgebung der Zeile der ausgewählten Zelle verwendet. So ist gewährleistet, dass die einzelnen Abteilungen auch in der aktuellen Zeile unterschiedliche Farben erhalten. Die erneute Auswahl einer Zelle in der bereits markierten Zeile bleibt wirkungslos, damit hier ungestört gearbeitet wdn kann.
Der Blattschutz muss vor dem Ersteinsatz des Programms aufgehoben und das voreingestellte Passwort "xyz" durch das gewünschte ersetzt wdn. Da dieses im Pgm im Klartext steht, empfehle ich, das VBA-Projekt ebenfalls zu schützen (rechter Mausklick auf VBA-Project, im Menü Eigenschaften anklicken und im PopUp entsprechend verfahren).
Viel Freude!
Luc :-?
Anzeige
Nachtrag zur Lösung
22.01.2007 01:51:53
Luc:-?
Bitte in der Prozedur ZeilenFarbe vor End Sub noch...

Set blatt = Nothing: zelle = Nothing 

...einfügen. Ist besserer PgmStil... ;-)
Luc :-?
PS: ws könnte auch noch = Nothing gesetzt wdn, aber dazu müsste ich das nochmal umbauen, was den Aufwand nicht lohnt.
Sorry, Korrektur: Set zelle = Nothing -- owT
22.01.2007 02:13:58
Luc:-?
:-?

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige