Microsoft Excel

Herbers Excel/VBA-Archiv

Hintergrundfarbe behalten VBA | Herbers Excel-Forum


Betrifft: Hintergrundfarbe behalten VBA von: MathiasW.
Geschrieben am: 21.01.2012 09:30:04

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

  

Betrifft: AW: Hintergrundfarbe behalten VBA von: Hajo_Zi
Geschrieben am: 21.01.2012 09:36:02

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.

GrußformelHomepage


  

Betrifft: AW: Hintergrundfarbe behalten VBA von: MathiasW.
Geschrieben am: 21.01.2012 09:42:07

Hallo haio,
danke für die Hilfe probier ich gleich mal aus :-


  

Betrifft: AW: Hintergrundfarbe behalten VBA von: Hajo_Zi
Geschrieben am: 21.01.2012 09:45:12

Hallo Mathias,

soll jemand vorbei kommen und helfen, oder warum ist der Beitrag als offen gekennzeichnet?

Gruß Hajo


  

Betrifft: AW: Hintergrundfarbe behalten VBA von: MathiasW.
Geschrieben am: 21.01.2012 09:57:11

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


  

Betrifft: AW: Hintergrundfarbe behalten VBA von: Hajo_Zi
Geschrieben am: 21.01.2012 10:02:45

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


  

Betrifft: AW: Hintergrundfarbe behalten VBA von: MathiasW.
Geschrieben am: 21.01.2012 10:13:27

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


  

Betrifft: AW: Hintergrundfarbe behalten VBA von: Hajo_Zi
Geschrieben am: 21.01.2012 10:19:03

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


  

Betrifft: AW: Hintergrundfarbe behalten VBA von: MathiasW.
Geschrieben am: 21.01.2012 10:48:21

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.


  

Betrifft: AW: Hintergrundfarbe behalten VBA von: Hajo_Zi
Geschrieben am: 21.01.2012 10:51:24

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


  

Betrifft: AW: Hintergrundfarbe behalten VBA von: Hajo_Zi
Geschrieben am: 21.01.2012 10:51:26

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


  

Betrifft: AW: Hintergrundfarbe behalten VBA von: MathiasW.
Geschrieben am: 21.01.2012 10:58:00

Super das hat geholfen... :-)

wünsche ein schönes WE

Gruss Mathias


  

Betrifft: AW: Hintergrundfarbe behalten VBA von: Josef Ehrensberger
Geschrieben am: 21.01.2012 10:00:48


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 »



  

Betrifft: AW: Hintergrundfarbe behalten VBA von: MathiasW.
Geschrieben am: 21.01.2012 10:26:11

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


  

Betrifft: AW: Hintergrundfarbe behalten VBA von: Josef Ehrensberger
Geschrieben am: 21.01.2012 11:50:58


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 »



  

Betrifft: Variablen vergessen;-))) von: Josef Ehrensberger
Geschrieben am: 21.01.2012 11:59:31


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 »



  

Betrifft: AW: Variablen vergessen;-))) von: MathiasW.
Geschrieben am: 21.01.2012 14:01:41

Perfekt, genau so sollte es sein :-)

vielen Dank und schönes WE

Gruss Mathias


Beiträge aus den Excel-Beispielen zum Thema "Hintergrundfarbe behalten VBA"