Jump to content

Transparent fyllningsfärg?


Go to solution Solved by 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

 

Link to comment
Share on other sites

 

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.

 

Edited by MH_
Småhängde sig, blev tvungen att posta i förtid
  • Thanks 1
Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

  • Solution
Posted (edited)

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

Edited by Mikael63
Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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...

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

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

×
×
  • Create New...