Eingabefeld einfärben



Excel-Version: Ab 8.0
nach unten

Betrifft: Eingabefeld einfärben
von: rainer
Geschrieben am: 17.07.2002 - 15:15:24

Lieber Hajo,

du wolltest ja Rückmeldung auf deine Erweiterung haben, nun war der beitrag schon aus dem Forum (nach 5 Tagen verbannt), daher noch mal dden Programmfetzen und unten die kleinen Fehlerchen, die da noch auftreten.

Der Blattschutz macht wohl Ärger, da ja dann keine Änderung (von geschützten Zellen) mehr zulässig ist, s.u. ev. gleich nur ungeschützte Zellen anspringen wäre eine Lösung, damit wäre auch das lästige Tabulatorproblem gelöst (nicht nur mit Tab geht er dann in die nächste Zelle, sondern auch bei Return(Anm.: ich hatte mal in einer anderen Anfrage gefragt wie man die Returntaste zur Tab machen kann) .

das war's erst mal rainer

in ein Modul


Option Explicit
Public OldColorIndex As Variant
Public OldRange As String
Public Register As String


in DieseArbeitsmappe
Option Explicit

Private Sub Workbook_BeforeClose(Cancel As Boolean)
If OldRange <> "" Then ActiveSheet.Range(OldRange).Interior.ColorIndex = OldColorIndex
End Sub

Private Sub Workbook_Open()
OldRange = ActiveCell.Address
Register = ActiveSheet.Name
OldColorIndex = ActiveCell.Interior.ColorIndex
ActiveCell.Interior.ColorIndex = 3
End Sub

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
OldRange = ActiveCell.Address
OldColorIndex = ActiveCell.Interior.ColorIndex
ActiveCell.Interior.ColorIndex = 3
Register = ActiveSheet.Name
End Sub

Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
If OldRange <> "" Then Worksheets(Register).Range(OldRange).Interior.ColorIndex = OldColorIndex
End Sub

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
' Beim 1. Aufruf ist OldRange noch undefiniert
If OldRange = "" Then
OldRange = Target.Address
OldColorIndex = Target.Interior.ColorIndex
' Setze Hintergrundfarbe der aktiven Selection auf Rot
Target.Interior.ColorIndex = 3
Else
' Setze alten Range auf alte Farbe
If Range(OldRange).Interior.ColorIndex = 3 Then
Range(OldRange).Interior.ColorIndex = OldColorIndex
End If
OldColorIndex = Target.Interior.ColorIndex
' Merke mir aktuellen Adresse für nächsten Aufruf
OldRange = Target.Address
' Setze Hintergrundfarbe der aktiven Selection auf Rot
Target.Interior.ColorIndex = 3
End If
End Sub

kein Code mehr in den Tabellen.

Gruß Hajo


Re: Eingabefeld einfärben
von: rainer
Geschrieben am: 16.07.2002 - 12:31:22

Lieber Hajo,

erst mal vielen Dank für dein Gehirnschmalz ..., das mit dem Arbeitsblatt wechsel klappt jetzt super.
Und ich habe auch eine Idee warum das mit der Fehlermeldung (Laufzeitfehler 1004) erscheint. Wenn der Schutz aktiviert ist/wird,
darf die Farbe per Def, ja nicht mehr geändert werden; daher die Fehlermeldung.
Also sehe ich nur eine Lösung:
Vor dem Ändern prüfen, ob die Zelle gesperrt ist, wenn ja NIX tun (oder zur nächsten nicht geschützten Zelle springen, wäre noch
genialer), sonst einfärben.

So weit zur Theorie: Wie's dann in der Praxisprogrammierung aussieht ? in so antiquierten Sparchen, die ich mal gelernt habe kein
Problem, aber VBA ??? Ich werde mich mal dran versuchen, soll ja üben...


 nach oben

Beiträge aus den Excel-Beispielen zum Thema "Eingabefeld einfärben "