Gå till innehåll

Transparent fyllningsfärg?


Gå till lösning Löst av Mikael63,

Recommended Posts

Ja, det låter tokigt men:

Jag hämtat en exempelfil härifrån, någonstans: https://trumpexcel.com/free-ebook/
(jag hade inte kommit ihåg det om det inte fanns en länk i filen)

Där körs kod *) för att "highlighta" aktuell rad.

I exemplet används en fyllningsfärg i en villkorsstyrd regel. Den färgen tar över ev. fyllnadsfärg i bladet.

Trodde jag var smart som valde "Ingen färg" men röda kantlinjer.
Det hjälpte inte..

image.png.82a9ae2c1d5997d0f0c9b68e4445cfa2.png

Hur ska man bära sig åt för att få markering men se fyllnadsfärgen?

Jo, RowLiner by Chip Pearson gör ju jobbet men där sätts "Undo" ur spel vilket kan vara riskabelt. Dessutom är det ett tillägg till "min" Excel, jag skulle vilja ha funktionen i Excel-boken.

*)

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Application.CutCopyMode = False Then
Application.Calculate
End If
End Sub

 

Länk till kommentar
Dela på andra webbplatser

Postad (redigerade)

 

Hej. "Private Sub Worksheet_SelectionChange(...." ligger i boken. Inte i din excel (om du högerklickar på fliken och begär "visa kod" så ser du att den hör till fliken).

Jag antar att du hämtar akuell rad via något i stil med:

=RAD()=RAD(INDIREKT(CELL("adress")))

Och den triggas ju bara av att du verkligen går in och redigerar något i en cell eller uppdaterar. Det är väl därför de gjorde "Application.Calculate".

Så jag tror faktiskt att det är lite kört om du vill behålla Undo (om du inte vill skriva egna hanterare med hjälp av Application.OnUndo/Application.Undo).

En variant för att lösa ditt problem är att radera dina villkor och skapa dom med ett makro så att du har kontroll. Typ (inspelat):

Sub Makro1()
    Cells.Select
    Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
        "=RAD()=RAD(INDIREKT(CELL(""adress"")))"
    Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
    
    
    With Selection.FormatConditions(1).Borders(xlTop)
        .LineStyle = xlContinuous
        .Color = -16776961
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.FormatConditions(1).Borders(xlBottom)
        .LineStyle = xlContinuous
        .Color = -16776961
        .TintAndShade = 0
        .Weight = xlThin
    End With
End Sub

Som du ser berörs inte "Interior" överhuvudtaget. Men om du hade kört manuellt och gått in i fliken fyllnadsfärg så är risken uppenbar att "Mönster= inget" skulle ingå i villkoret. På VBA'ska något i stil med:

    With Selection.FormatConditions(1).Interior
        .Pattern = xlNone
        .TintAndShade = 0
    End With

(test att spela in så ser du hur känslig excel är)

 

Om du skall köra en händelsehanterare så kan du även fundera på om du inte skall dumpa aktuellt radvärde någonstans på bladet. typ "A1" och skippa CELL() formeln helt

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Application.CutCopyMode = False Then
    Range("A1").Value = Target.Row
End If
End Sub

 

och låta villkoret du skapar hänvisa dit istället:

Sub Makro1()
    Cells.Select
    Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
        "=RAD()=$A$1"
    Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
    With Selection.FormatConditions(1).Borders(xlTop)
        .LineStyle = xlContinuous
        .Color = -16776961
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.FormatConditions(1).Borders(xlBottom)
        .LineStyle = xlContinuous
        .Color = -16776961
        .TintAndShade = 0
        .Weight = xlThin
    End With
End Sub

 

Fast någon annan cell än A1 naturligtvis. 

Det borde gå att skapa en "public funktion" och hänvisa dit. Men vem orkar.

 

Redigerad av MH_
Småhängde sig, blev tvungen att posta i förtid
  • Thanks 1
Länk till kommentar
Dela på andra webbplatser

Typ samma sak hur man än gör. Villkordsstyrd formatering kräver något slags uppdatering. Och för att Slippa "överfärgningen" måste du se till att "ingen färg" INTE är vald i villkoret.

Länk till kommentar
Dela på andra webbplatser

Ja koden är ju endast till för att slippa använda F9 efter att ha valt en annan cell.

Villkoret är väl i princip "raden där cellen är markerad"? Det är ju också det önskvärda. Aktuell rad ska utmärka sig på något sätt oavsett om där finns celler med eller utan fyllnadsfärg. Man ska kunna få denna indikering bara genom att markera annan cell, med mus eller piltangenter.

Länk till kommentar
Dela på andra webbplatser

  • Lösning

Hm.. om jag väljer Radera regler - hela bladet och sedan markerar alla celler, Ny regel, genom att använda en formel, klistrar in villkoret, formatera, mönstertyp 6,25 % grå OK,ejar så kommer cellens fyllnadsfärg att visas "bakom" mönstret.

Tillägg: Detta fungerar också om jag enbart väljer kantlinjer, röd, övre och nedre. 

Så fort jag väljer att redigera regeln (formateringen), även om jag väljer samma som tidigare, döljs cellens fyllnadsfärg bakom mönstret =??

Nu skulle jag kanske behöva ett annat mönster låt säga 4 % grå eller om det gick 4 % grön eller liknande.

Tillägg: Man behöver alltså radera alla regler skapa ny regel och direkt välja andra alternativ än vad som finns under fliken Fyll i.

 

image.png.ff4500e384fed7ffc17da61b3c01cd29.png

Redigerad av Mikael63
Länk till kommentar
Dela på andra webbplatser

Ja, det var därför jag landade i att skapa villkoret med ett makro. Det verkar omöjligt att få Excel att fatta att man inte vill blanda in bakgrundsfärgen när man har öppnat [formatera] dialogrutan.

Makrot kan ju kastas bort när man skapat villkoret.

Länk till kommentar
Dela på andra webbplatser

15 timmar sedan, MH_ sade:

Ja, det var därför jag landade i att skapa villkoret med ett makro. Det verkar omöjligt att få Excel att fatta att man inte vill blanda in bakgrundsfärgen när man har öppnat [formatera] dialogrutan.

Makrot kan ju kastas bort när man skapat villkoret.

Jag hänger inte med alls nu...

Länk till kommentar
Dela på andra webbplatser

Delta i dialogen

Du kan skriva svaret nu och registrera dig senare, Om du har ett konto, logga in nu för att svara på inlägget.

Gäst
Svara i detta ämne...

×   Du har klistrat in innehåll med formatering.   Ta bort formatering

  Only 75 emoji are allowed.

×   Din länk har automatiskt bäddats in.   Visa som länk istället

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Skapa nytt...