Print side | Luk vindue

Farvelæg hel række, hvis markør står i den

Udskrevet fra: Dansk Regneark Forum
Kategori: Hjælp til regneark.
Forum navn: Generelt
Forum beskrivelse: Hjælp til generel daglig brug af programmet Excel
Web-adresse: https://forum.excel-regneark.dk/forum_posts.asp?TID=3321
Udskrevet den: 20.Maj.2024 kl. 00:30


Emne: Farvelæg hel række, hvis markør står i den
Besked fra: Ib Hansen
Emne: Farvelæg hel række, hvis markør står i den
Posteringsdato: 12.Jan.2018 kl. 14:33
Hej Forum.

Betinget format
Muligvis er dette forklaret i en anden tråd - Jeg ledte, men kunne ikke finde det.

Jeg kan skrive i cellerne C2:N2 + R2:T2.
Hvis musen placeres i en af cellerne, vil jeg godt have de samme celler C2:N2 + R2:T2 til at vise f.eks. lysegult eller lysegrå.

Herefter har jeg 200 rækker ned af, men det er vel bare at kopiere formatet ned i de aktuelle rækker.

På forhånd tak

Ib



-------------
Excel 2010 Dk og 2019 Dk på samme computer.
Bruger dog stadig mest 2010..
Men sådan er der jo så majet :o)



Svar:
Besked fra: EXCELGAARD
Posteringsdato: 12.Jan.2018 kl. 15:52
Indsæt denne i Worksheet modulet:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

      If Intersect(Selection, Range("C2:N2")) Is Nothing And _
         Intersect(Selection, Range("R2:T2")) Is Nothing Then
            Range("C2:N2,R2:T2").Interior.ColorIndex = xlNone
      Else
            Range("C2:N2,R2:T2").Interior.Color = rgbYellow
      End If

End Sub
Og, jo, du kan bare udvide med de række, du skal bruge Smile


-------------
Husk, at trykke på [Tak], hvis du kan lide et indlæg.
Husk, at trykke på [Accepteret Svar], hvis du kan bruge et løsningsforslag.


Besked fra: EXCELGAARD
Posteringsdato: 12.Jan.2018 kl. 15:59
Denne her kan klare dine 200 rækker:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

      Range("C2:N200,R2:T200").Interior.ColorIndex = xlNone
      If Intersect(Selection, Range("C2:N200")) Is Nothing And _
         Intersect(Selection, Range("R2:T200")) Is Nothing Then Exit Sub
      Range("C" & ActiveCell.Row & ":N" & ActiveCell.Row & ",R" & ActiveCell.Row & ":T" & ActiveCell.Row).Interior.Color = rgbYellow

End Sub



-------------
Husk, at trykke på [Tak], hvis du kan lide et indlæg.
Husk, at trykke på [Accepteret Svar], hvis du kan bruge et løsningsforslag.


Besked fra: EXCELGAARD
Posteringsdato: 12.Jan.2018 kl. 16:03
Og, her har du et regneark, med koden indbygget:
www.excelgaard.dk/Files/Workbooks/DRF/MarkCellRows.XLSm www.excelgaard.dk/Files/Workbooks/DRF/MarkCellRows.XLSm



-------------
Husk, at trykke på [Tak], hvis du kan lide et indlæg.
Husk, at trykke på [Accepteret Svar], hvis du kan bruge et løsningsforslag.


Besked fra: Ib Hansen
Posteringsdato: 12.Jan.2018 kl. 16:30
Mit ark er låst.
Derfor skal det låses op, før koden køres.
Og låses igen, når koden er kørt.
Det virker fint Smile

uploads/1125/Vagtliste_test.xlsm" rel="nofollow - Test Ark

Men koden sletter eksisterende farver i skemaet.
Det kunne undgås med en Betinget format, der bare ville farvelægge oven på eksisterenede farver.
Farven gul er også meget skrap, men det kan nok løses med en RGB(kode) i stedet.


-------------
Excel 2010 Dk og 2019 Dk på samme computer.
Bruger dog stadig mest 2010..
Men sådan er der jo så majet :o)


Besked fra: Ib Hansen
Posteringsdato: 12.Jan.2018 kl. 16:34
Koden konflikter også med udskriftskoden Unhappy

-------------
Excel 2010 Dk og 2019 Dk på samme computer.
Bruger dog stadig mest 2010..
Men sådan er der jo så majet :o)


Besked fra: EXCELGAARD
Posteringsdato: 12.Jan.2018 kl. 19:14
Du kan, naturligvis, selv vælge hvilke(n) farve(r) som makroen skal 'defaulte' til - jeg valgte blot ingen farvelægning, da jeg ikke vidste bedre - men, du kan jo blot selv indlægge de(n) farve(r) som du ønsker.

Jeg valgte blot gul (rgbYellow) som markeringsfarve, fordi, det var den farve, som du selv nævnte i dit spørgsmål - igen, er du velkommen til selv at vælge din markeringsfarve.

Men, jeg forstår ikke, hvordan makroen kan konflikte med din udskriftskode?!?
Min makro laver overhovedet ingen udskriftsindstillinger???


-------------
Husk, at trykke på [Tak], hvis du kan lide et indlæg.
Husk, at trykke på [Accepteret Svar], hvis du kan bruge et løsningsforslag.


Besked fra: Ib Hansen
Posteringsdato: 12.Jan.2018 kl. 19:44
Jeg har farvelagt enkelte kolonner i arket.

Koden starter med Range("C2:N200,R2:T200").Interior.ColorIndex = xlNone, hvilket fjerne al farven fra Range, når koden køres.

Men det kan jeg løse ved at farvelægge kolonnerne vha. et Betinget Format i de rækker, koden ikke fjerner farven fra.
-----------

Som markeringsfarve bruger jeg Interrior.Color = RGB(255, 255, 200) som er en svag gul farve.
Interrior.Coler = rgbYellow er en meget stærk gul farve.
Muligvis vælger jeg i stedet en meget lysegrå farve.

Så det er også løst.
-----------

Mht. min printerkode i arket.
Den udskriver kun de udfyldte rækker og undlader at udskrive alle tomme rækker ned til række 200.

Række-markerings-koden starter med at låse arket op.
Herefter aktiveres koden, der farvelægger rækken.
Og så låses arket igen.

Printerkoden er sat til Range("C2:C200").
Når printerkoden kører, søger den ned igennem rækkerne, hvorefter den skjuler alle tomme rækker.

I den første tomme række bliver arket låst igen af række-markerings-koden.
Det får printerkoden til at lave en BUG.

Men med lidt vilje, skal jeg nok også få det løst Confused

Når og hvis jeg får løst det sidste problem, markerer jeg tråden som "Løst"Wink


-------------
Excel 2010 Dk og 2019 Dk på samme computer.
Bruger dog stadig mest 2010..
Men sådan er der jo så majet :o)


Besked fra: EXCELGAARD
Posteringsdato: 12.Jan.2018 kl. 19:56
Jeg vil anbefale dig, at benytte en af RGB konstanterne, fremfor RGB() funktionen, da dette både gør din kode hurtigere, mere fejlfri, og lettere, at læse.

Du kan finde dem alle sammen her:
www.excelgaard.dk/Bib/rgbFarver/Tabel/ www.excelgaard.dk/Bib/rgbFarver/Tabel/

Den lysegule farve, som du efterspørger, hedder 'rgbLemonChiffon' (har RGB værdierne 255, 250, 205, hvilket er meget tæt på dine værdier)


-------------
Husk, at trykke på [Tak], hvis du kan lide et indlæg.
Husk, at trykke på [Accepteret Svar], hvis du kan bruge et løsningsforslag.


Besked fra: Ib Hansen
Posteringsdato: 12.Jan.2018 kl. 20:04
Det vil jeg gøre, men bruger nok 'rgbGainsboro' Wink

-------------
Excel 2010 Dk og 2019 Dk på samme computer.
Bruger dog stadig mest 2010..
Men sådan er der jo så majet :o)


Besked fra: EXCELGAARD
Posteringsdato: 12.Jan.2018 kl. 20:06
Kan du ikke blot lade printer koden gøre det samme: Låse arket op først, og derefter låse arket igen bagefter?

For du bruger vel forhåbentlig ikke '.Select', når du løber rækkerne igennem?!?  Vel?  VEL, ibbermand?  Smile

PS: Og, hvis du gør, så kan du løse problemet, ved at lade...
Application.EnableEvents = False
...være den første linje i din printer makro, og derefter lade...
Application.EnableEvents = True
...være den sidste linje i din printer kode.


-------------
Husk, at trykke på [Tak], hvis du kan lide et indlæg.
Husk, at trykke på [Accepteret Svar], hvis du kan bruge et løsningsforslag.


Besked fra: Ib Hansen
Posteringsdato: 12.Jan.2018 kl. 20:24
Jeg vedhæftede jo arket i mit svar nr. 1, så du kan selv se koden.
Den står i Modulet - A06_Udskriv_Skema

Men
- Printerkoden låser først arket op.
- Næst søger den fra C2 til C213 og finder den første tomme række, der vælges med Select.
- Næst skjuler den rækken.
- Og det fortsætter den med til slut med Next.
- Endelig låser den arket igen.

- Men når den første tomme række bliver 'Selected', aktiveres markerings-koden og så låser arket.
- Derved kommer der BUG på 'Selection.EntireRow.Hidden = True' da den ikke kan skjule en række, der er låst.

Det er et spørgsmål om at finde en anden printerkode, men den skal jeg først lede efter på nettet.

    'UnprotectAll
        myPassword = Sheets("Indstil").Range("B1").Value
        For Each sheet In ActiveWorkbook.Worksheets
        sheet.Unprotect Password:=myPassword
        Next sheet
    
    'HideEmptyRows
        Dim s As String
            For i = 1 To Range("C2:C213").Count
            s = i & ":" & i
            If IsEmpty(Cells(i, 3).Value) Then
                Rows(s).Select
                Selection.EntireRow.Hidden = True
            End If
            Next
    
    'ProtectAll
        myPassword = Sheets("Indstil").Range("B1").Value
        For Each sheet In ActiveWorkbook.Worksheets
        sheet.Protect Password:=myPassword, AllowFiltering:=True
        Next sheet


-------------
Excel 2010 Dk og 2019 Dk på samme computer.
Bruger dog stadig mest 2010..
Men sådan er der jo så majet :o)


Besked fra: Ib Hansen
Posteringsdato: 12.Jan.2018 kl. 20:34
Application.EnableEvents = False / True løste problemet Clap

-------------
Excel 2010 Dk og 2019 Dk på samme computer.
Bruger dog stadig mest 2010..
Men sådan er der jo så majet :o)


Besked fra: EXCELGAARD
Posteringsdato: 12.Jan.2018 kl. 21:51
Citér Jeg vedhæftede jo arket i mit svar nr. 1, så du kan selv se koden
Det var derfor, jeg skrev, som jeg skrev - man må ALDRIG bruge '.Select' i sin kode - ALT koding kan klares uden '.Select' (med nogle få ret speciale undtagelser, som jeg er sikker på, at du aldrig kommer til at støde ind i Smile)

Men, du fik løst problemet - så... ROCK ON, Ibbermand Thumbs Up


-------------
Husk, at trykke på [Tak], hvis du kan lide et indlæg.
Husk, at trykke på [Accepteret Svar], hvis du kan bruge et løsningsforslag.


Besked fra: Ib Hansen
Posteringsdato: 12.Jan.2018 kl. 21:54
Ja, tak for hjælpen Clap

Nu mangler jeg bare en søgefunktion Ouch
Man bliver aldrig færdig og finder hele tiden på nye sjove funktioner, der tager en F****** tid at lave LOL


-------------
Excel 2010 Dk og 2019 Dk på samme computer.
Bruger dog stadig mest 2010..
Men sådan er der jo så majet :o)


Besked fra: EXCELGAARD
Posteringsdato: 13.Jan.2018 kl. 07:04
Et regneark bliver aldrig færdig - man holder bare en pause fra at arbejde på det, mens man arbejder på et andet regneark - men, før eller siden vender man tilbage til det Smile


-------------
Husk, at trykke på [Tak], hvis du kan lide et indlæg.
Husk, at trykke på [Accepteret Svar], hvis du kan bruge et løsningsforslag.


Besked fra: Bjarnehansen
Posteringsdato: 13.Jan.2018 kl. 07:07
Det kender jeg godt Wacko


-------------
Husk, at trykke på [Tak], hvis du kan lide et indlæg.
Husk, at trykke på [Accepteret Svar], hvis du kan bruge et løsningsforslag.
Med venlig hilsen - Bjarne Hansen - Microsoft 365 DK


Besked fra: Ib Hansen
Posteringsdato: 13.Jan.2018 kl. 10:01
Jeg har 5-6 projekter, jeg ikke kan blive færdig med, fordi jeg er kørt fast i VBA koderne Angry
Når jeg vender tilbage, har jeg næsten glemt, hvor jeg var kommet til Unhappy
De bliver nok aldrig færdige Dead



-------------
Excel 2010 Dk og 2019 Dk på samme computer.
Bruger dog stadig mest 2010..
Men sådan er der jo så majet :o)


Besked fra: Ib Hansen
Posteringsdato: 13.Jan.2018 kl. 19:19
Jeg havde en fejl i mit ark, jeg ikke forstod.

Når jeg kører en kode, der kræver at arket skal være ubeskyttet, starter koden med at låse arket op.
I slutningen af koden, beskytter den hele arket igen.

Jeg kunne ikke forstå, at hver gang jeg testede, om en celle, der burde være låst, nu også var det, var den ulåst.

Jeg stod derfor på fanen "Gennemse" og kunne se knappen "Beskyt ark"
- Hver gang jeg klikkede inde i skrivefeltet, der markere en Row med farve, blev arket låst.
- Hver gang jeg klikke udenfor skrivefeltet, blev arket låst op.
- Jeg deaktiverede derfor farve-koden med REM og så virkede det hele igen.

Hvad er det, der sker med farve-koden, når man klikke udenfor 'Range("C2:N200, R2:T200")' ?
Hvorfor låses arket op ?

Lidt ærgelig, da det var en god koden, men som den er nu, kan den ikke bruges Ouch
    Dim myPassword As String
    Dim sheet As Worksheet

    'UnprotectAll
        myPassword = Sheets("Indstil").Range("B1").Value
        For Each sheet In ActiveWorkbook.Worksheets
        sheet.Unprotect Password:=myPassword
        Next sheet

        Range("C2:N200,R2:T200").Interior.ColorIndex = xlNone

        If Intersect(Selection, Range("C2:N200")) Is Nothing And _
        Intersect(Selection, Range("R2:T200")) Is Nothing Then Exit Sub

        Range("C" & ActiveCell.Row & ":N" & ActiveCell.Row & ",R" _
        & ActiveCell.Row & ":T" & ActiveCell.Row).Interior.Color = rgbLemonChiffon
        
        Rem farvetabel - www.excelgaard.dk/Bib/rgbFarver/Tabel/" rel="nofollow">http://www.EXCELGAARD.dk/Bib/rgbFarver/Tabel/
        Rem RGB(242, 242, 242) = Lysegrå
        Rem RGB(255, 255, 204) = Lysegul
      
    'ProtectAll
        myPassword = Sheets("Indstil").Range("B1").Value
        For Each sheet In ActiveWorkbook.Worksheets
        sheet.Protect Password:=myPassword, AllowFiltering:=True
        Next sheet


-------------
Excel 2010 Dk og 2019 Dk på samme computer.
Bruger dog stadig mest 2010..
Men sådan er der jo så majet :o)


Besked fra: EXCELGAARD
Posteringsdato: 13.Jan.2018 kl. 20:19
Som du kan se i koden, så gør koden INTET ved '.Locked' egenskaben ved cellen - så det er ikke min kode, der er noget i vejen med - fejlen må ligge et andet sted...

En grum mistake dukker dog op i mit baghoved: Det er 'Fy, fy, skamme, skamme, a, a, niks, niks, slut, forbudt' at benytte VBA kodeord som variabel navne!

Så, at benytte variabel navne som 'sheet' er en dødssynd!
Du risikere, at VBA ikke ved, hvad du hentyder til: Objektet eller din variabel.

Jeg havde faktisk problemet, så sent som i sidste uge, hvor jeg skulle fejl søge på en kode for en anden person, og, hvor det viste sig, at fejlen var noget så enkelt, som at han havde benyttet 'Name' som variabel navn!
Vi rettede variabel navnet til 'MyName', der ikke er et VBA kodeord, og, vupti - koden virkede...

Enten er det, dette, der er fejlen, eller osse er det fordi, du undervejs gør noget andet i en anden makro (jeg mistænker dig, for at fortage noget kopiering i din kode?).

Men, under alle omstændigheder bør du ændre dit variabel navn til noget andet en 'sheet'.
Jeg benytter altid variablen, 'WS', for 'Worksheet'.



-------------
Husk, at trykke på [Tak], hvis du kan lide et indlæg.
Husk, at trykke på [Accepteret Svar], hvis du kan bruge et løsningsforslag.


Besked fra: Ib Hansen
Posteringsdato: 13.Jan.2018 kl. 20:36
Jamen nu har jeg ikke så frygteligt meget forstand på VBA og gør sikkert en masse forkert !!

Men jeg var lige en tur i Bilka !!
Og mellem Flæskestegen og Roastbeefen, gik der en prås op for mig.
Man tænke VBA på de mærkeligste steder og tidspunkter - Hmmmm Unhappy

Selvfølgelig - Når man er udenfor området der farver rækkerne = Is Nothing Then Exit Sub
Den har låst arket op først i koden, men her hopper helt ud af koden og når aldrig ned til låse koden.

I stedet for Then Exit Sub skal den hedde Then GoTo ud 
Og så skal ud: være lige over låse koden Hug
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim myPassword As String
    Dim sheet As Worksheet
    
        If Sheets("Indstil").Range("C19") = 1 Then Exit Sub
        
        Application.ScreenUpdating = False
        
    'UnprotectAll
        myPassword = Sheets("Indstil").Range("B1").Value
        For Each sheet In ActiveWorkbook.Worksheets
        sheet.Unprotect Password:=myPassword
        Next sheet

        Range("C2:N200,R2:T200").Interior.ColorIndex = xlNone
        
        If Intersect(Selection, Range("C2:N200")) Is Nothing And _
        Intersect(Selection, Range("R2:T200")) Is Nothing Then GoTo ud
        
        Range("C" & ActiveCell.Row & ":N" & ActiveCell.Row & ",R" _
        & ActiveCell.Row & ":T" & ActiveCell.Row).Interior.Color = rgbLemonChiffon
        
        Rem farver - http://www.EXCELGAARD.dk/Bib/rgbFarver/Tabel/
        Rem RGB(242, 242, 242) = Lysegrå
        Rem RGB(255, 255, 200) = Lysegul
ud:
    'ProtectAll
        myPassword = Sheets("Indstil").Range("B1").Value
        For Each sheet In ActiveWorkbook.Worksheets
        sheet.Protect Password:=myPassword, AllowFiltering:=True
        Next sheet
End Sub


-------------
Excel 2010 Dk og 2019 Dk på samme computer.
Bruger dog stadig mest 2010..
Men sådan er der jo så majet :o)


Besked fra: excelent
Posteringsdato: 13.Jan.2018 kl. 20:42
blærerøv :-)

-------------
Jeg anvender Excel 2016 DK. Hvad anvender DU ? HUSK TILBAGEMELDING !!!


Besked fra: Ib Hansen
Posteringsdato: 13.Jan.2018 kl. 20:44
Tak Excelent - Ha ha ha.
Det er faktisk dig, der har lært mig at bruge Then GoTo Wink



-------------
Excel 2010 Dk og 2019 Dk på samme computer.
Bruger dog stadig mest 2010..
Men sådan er der jo så majet :o)


Besked fra: excelent
Posteringsdato: 13.Jan.2018 kl. 20:46
ja det ik så ringe med de der AHA oplevelser

-------------
Jeg anvender Excel 2016 DK. Hvad anvender DU ? HUSK TILBAGEMELDING !!!


Besked fra: Ib Hansen
Posteringsdato: 13.Jan.2018 kl. 20:50
Næ..
Jeg tager mig selv i at tænke VBA på de mest mærkelige tidspunkter, men pludselig kan man alligevel se løsningen for sig eller dét, man tror er løsningen.
Og så er det bare med at komme hjem og få det prøvet Big smile

Dem har jeg rigtigt mange af Pig


-------------
Excel 2010 Dk og 2019 Dk på samme computer.
Bruger dog stadig mest 2010..
Men sådan er der jo så majet :o)



Print side | Luk vindue