Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1244to1248
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

Hintergrundfarbe behalten VBA

Hintergrundfarbe behalten VBA
MathiasW.
Guten morgen Exelianer,
ich habe ein Makro, welches einer Modifikation bedarf:
Das Makro markiert die Zellen A+B der jeweils aktiven Zeile gelb und entfernt beim Zeilenwechsel die Farbe.
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
Static AlteZeile As Integer
If AlteZeile  0 Then
Range(Cells(AlteZeile, 1), Cells(AlteZeile, 2)).Interior.ColorIndex = xlColorIndexNone
Range(Cells(Target.Row, 1), Cells(Target.Row, 2)).Interior.ColorIndex = 6
End If
AlteZeile = Target.Row
End Sub
Könnt ihr den Code so ändern, dass beim Zeilenwechsel nicht durch xlColorIndexNone die Farbe entfernt, sondern die alte Farbe wieder hergstellt wird?
vielen Dank
Mathias
AW: Hintergrundfarbe behalten VBA
21.01.2012 09:36:02
Hajo_Zi
Hallo matthias,
lösche die beiden Zeilen
Range(Cells(AlteZeile, 1), Cells(AlteZeile, 2)).Interior.ColorIndex = xlColorIndexNone
Range(Cells(Target.Row, 1), Cells(Target.Row, 2)).Interior.ColorIndex = 6
dann wird die Farbe nicht verändert.

AW: Hintergrundfarbe behalten VBA
21.01.2012 09:42:07
MathiasW.
Hallo haio,
danke für die Hilfe probier ich gleich mal aus :-
AW: Hintergrundfarbe behalten VBA
21.01.2012 09:45:12
Hajo_Zi
Hallo Mathias,
soll jemand vorbei kommen und helfen, oder warum ist der Beitrag als offen gekennzeichnet?
Gruß Hajo
Anzeige
AW: Hintergrundfarbe behalten VBA
21.01.2012 09:57:11
MathiasW.
Hallo Hajo,
ich habs mit Humor genommen, dass du meinen Namen nicht richtig geschrieben hast, auch dass du die Frage anscheinend anders interpretiert hast. Das hilft mir bloss nicht weiter. Würd mich freuen wenn du helfen kannst, falls nicht möchte ich dich bitten nicht mehr zu antworten. Die Frage war, nach einer Wiederherstellung der alten Farbe nach Zeilenwechsel, nicht dass sich gar nichts ändern soll.
Gruss und schönen Samstag
Mathias
AW: Hintergrundfarbe behalten VBA
21.01.2012 10:02:45
Hajo_Zi
Hallo Mathias,
warum veränderst Du die Farbe, wenn Du Sie doch wiederherstellen willst. Das war mein Vorschlag verändere die Farbe doch erst nicht. Ich jhabe in Deinem Beitrag keine Grund gesehen warum die Farbe verändert werden muss um dann wieder zurückgestellt zu werden. Vielleuicht siolltest Du das beschreiben. Ich kann nur auf das Antworten was im Beitrag steht.
Gruß Hajo
Anzeige
AW: Hintergrundfarbe behalten VBA
21.01.2012 10:13:27
MathiasW.
Hallo Hajo,
in z.B. A6+B6 stehen Vor+Nachname in A7+B7 auch ebenso in A130+B130 usw.
ziwschen drin in Spalte A+B sind z.B.Überschriften, welche farblich hinterlegt sind, das soll auch so bleiben... Die Namen hingegen sollen ihre Markierung wieder verlieren....
Gruss Mathias
AW: Hintergrundfarbe behalten VBA
21.01.2012 10:19:03
Hajo_Zi
Hallo Mathias,
ichb hatte schon gescvhrieben, ich kann nur auf das Antworten was im Beitrag steht, ich sehe nicht Deine Datei.
Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
If CallByName(Selection, IIf(Val( _
Application.Version) > 11, "CountLarge", "Count"), VbGet) = 1 Then
If Target  "Überschrift" Then
Range(Cells(AlteZeile, 1), Cells(AlteZeile, 2)).Interior.ColorIndex =  _
xlColorIndexNone
End If
End If
End Sub
Gruß Hajo
Anzeige
AW: Hintergrundfarbe behalten VBA
21.01.2012 10:48:21
MathiasW.
Hallo Hajo,
wegen Missverständnissen wurden schon viele Kriege geführt :-)
Es ist aber auch nicht immer einfach zu Beschreiben und zu bewerten was wichtig ist, wenn man Defizite beim Verständnis des Funktionsprinzips hat.
Leider bekomme ich beim aktivieren einer Zelle "Fehler beim Kompilieren", der VBE öffnet sich und "AlteZeile" ist blau hinterlegt. Hab deinen Code in Worksheet kopiert nicht in ein Modul.
Danke & Gruss Mathias
PS: Josef hat auch einen super Vorschlag gemacht, leider noch mit einen Fehler, den hatte ich allerdings auch nicht vorgegeben.
AW: Hintergrundfarbe behalten VBA
21.01.2012 10:51:24
Hajo_Zi
Hallo Mathias,
das hatte icgh übersehen.
Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
If CallByName(Selection, IIf(Val( _
Application.Version) > 11, "CountLarge", "Count"), VbGet) = 1 Then
If Target  "Überschrift" Then
Range(Cells(Target.Row, 1), Cells(Target.Row, 2)).Interior.ColorIndex =  _
xlColorIndexNone
End If
End If
End Sub

Gruß Hajo
Anzeige
AW: Hintergrundfarbe behalten VBA
21.01.2012 10:51:26
Hajo_Zi
Hallo Mathias,
das hatte icgh übersehen.
Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
If CallByName(Selection, IIf(Val( _
Application.Version) > 11, "CountLarge", "Count"), VbGet) = 1 Then
If Target  "Überschrift" Then
Range(Cells(Target.Row, 1), Cells(Target.Row, 2)).Interior.ColorIndex =  _
xlColorIndexNone
End If
End If
End Sub

Gruß Hajo
AW: Hintergrundfarbe behalten VBA
21.01.2012 10:58:00
MathiasW.
Super das hat geholfen... :-)
wünsche ein schönes WE
Gruss Mathias
Anzeige
AW: Hintergrundfarbe behalten VBA
21.01.2012 10:00:48
Josef

Hallo Matthias,
' **********************************************************************
' Modul: Tabelle1 Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
  highlightCell Range(Cells(Target(1, 1).Row, 1), Cells(Target(1, 1).Row, 2))
End Sub


' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Public oldRange As Range
Public oldColor() As Long

Sub highlightCell(Target As Range)
  Dim rng As Range, lngIndex As Long
  If Not oldRange Is Nothing Then
    For Each rng In oldRange
      For lngIndex = 0 To UBound(oldColor)
        rng.Interior.Color = IIf(oldColor(lngIndex) = 16777215, xlNone, oldColor(lngIndex))
      Next
    Next
  End If
  Set oldRange = Target
  lngIndex = 0
  Redim oldColor(Target.Cells.Count - 1)
  For Each rng In oldRange
    oldColor(lngIndex) = rng.Interior.Color
    lngIndex = lngIndex + 1
  Next
  Target.Interior.Color = vbYellow
End Sub



« Gruß Sepp »

Anzeige
AW: Hintergrundfarbe behalten VBA
21.01.2012 10:26:11
MathiasW.
Hallo Josef,
fast perfekt vielen Dank, leider hab ich das Problem, das beim speichern die letzte Markierung mit gespeichert wird und mein Blatt immer gelber wird :-( nach jeder Öffnung...
Gibt es vielleicht eine Möglichkeit, wie z.B. wenn Zelle A1 angeklickt wird, dass alle gelben Zellen der Spalten A:B entfärbt werden? oder etwas anderes um beim speichern bzw. schliessen die Anzahl gelben Zellen nicht permanent anwachsen zu lassen?
vielen Dank
Mathias
AW: Hintergrundfarbe behalten VBA
21.01.2012 11:50:58
Josef

Hallo Mathias,
ins Modul "DieseArbeitsmappe"
' **********************************************************************
' Modul: DieseArbeitsmappe Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit

Private Sub Workbook_BeforeClose(Cancel As Boolean)
  Dim bolSaved As Boolean
  
  If Not oldRange Is Nothing Then
    bolSaved = Me.Saved
    For Each rng In oldRange
      For lngIndex = 0 To UBound(oldColor)
        rng.Interior.Color = IIf(oldColor(lngIndex) = 16777215, xlNone, oldColor(lngIndex))
      Next
    Next
    If bolSaved Then Me.Save
  End If
  
End Sub



« Gruß Sepp »

Anzeige
Variablen vergessen;-)))
21.01.2012 11:59:31
Josef

Hallo nochmal,
hab ich doch glatt die Variablen vergessen;-))
' **********************************************************************
' Modul: DieseArbeitsmappe Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit

Private Sub Workbook_BeforeClose(Cancel As Boolean)
  Dim rng As Range, lngIndex As Long, bolSaved As Boolean
  
  If Not oldRange Is Nothing Then
    bolSaved = Me.Saved
    For Each rng In oldRange
      For lngIndex = 0 To UBound(oldColor)
        rng.Interior.Color = IIf(oldColor(lngIndex) = 16777215, xlNone, oldColor(lngIndex))
      Next
    Next
    If bolSaved Then Me.Save
  End If
  
End Sub



« Gruß Sepp »

Anzeige
AW: Variablen vergessen;-)))
21.01.2012 14:01:41
MathiasW.
Perfekt, genau so sollte es sein :-)
vielen Dank und schönes WE
Gruss Mathias

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige