Dansk Regneark Forum
  Hjælp Hjælp  Søg i forum   Arrangementer   Opret ny bruger Opret ny bruger  Log ind Log ind


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

 Besvar Besvar Side  12>
Forfatter
Ib Hansen Se dropdown
Guld bruger
Guld bruger
Avatar

Medlem: 15.Apr.2014
Land: Danmark
Status: Offline
Point: 652
Direkte link til dette indlæg Emne: Farvelæg hel række, hvis markør står i den
    Sendt: 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)
Til top



Til top
EXCELGAARD Se dropdown
Platin bruger
Platin bruger


Medlem: 27.Dec.2012
Land: Denmark
Status: Offline
Point: 5412
Accepteret svar Accepteret svar
Direkte link til dette indlæg Sendt: 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.
Til top
EXCELGAARD Se dropdown
Platin bruger
Platin bruger


Medlem: 27.Dec.2012
Land: Denmark
Status: Offline
Point: 5412
Direkte link til dette indlæg Sendt: 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.
Til top
EXCELGAARD Se dropdown
Platin bruger
Platin bruger


Medlem: 27.Dec.2012
Land: Denmark
Status: Offline
Point: 5412
Accepteret svar Accepteret svar
Direkte link til dette indlæg Sendt: 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.
Til top
EXCELGAARD Se dropdown
Platin bruger
Platin bruger


Medlem: 27.Dec.2012
Land: Denmark
Status: Offline
Point: 5412
Direkte link til dette indlæg Sendt: 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.
Til top
Ib Hansen Se dropdown
Guld bruger
Guld bruger
Avatar

Medlem: 15.Apr.2014
Land: Danmark
Status: Offline
Point: 652
Direkte link til dette indlæg Sendt: 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


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)
Til top
Ib Hansen Se dropdown
Guld bruger
Guld bruger
Avatar

Medlem: 15.Apr.2014
Land: Danmark
Status: Offline
Point: 652
Direkte link til dette indlæg Sendt: 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)
Til top
EXCELGAARD Se dropdown
Platin bruger
Platin bruger


Medlem: 27.Dec.2012
Land: Denmark
Status: Offline
Point: 5412
Direkte link til dette indlæg Sendt: 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.
Til top
Ib Hansen Se dropdown
Guld bruger
Guld bruger
Avatar

Medlem: 15.Apr.2014
Land: Danmark
Status: Offline
Point: 652
Direkte link til dette indlæg Sendt: 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)
Til top
EXCELGAARD Se dropdown
Platin bruger
Platin bruger


Medlem: 27.Dec.2012
Land: Denmark
Status: Offline
Point: 5412
Direkte link til dette indlæg Sendt: 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.
Til top
Ib Hansen Se dropdown
Guld bruger
Guld bruger
Avatar

Medlem: 15.Apr.2014
Land: Danmark
Status: Offline
Point: 652
Direkte link til dette indlæg Sendt: 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)
Til top
EXCELGAARD Se dropdown
Platin bruger
Platin bruger


Medlem: 27.Dec.2012
Land: Denmark
Status: Offline
Point: 5412
Direkte link til dette indlæg Sendt: 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.
Til top
Ib Hansen Se dropdown
Guld bruger
Guld bruger
Avatar

Medlem: 15.Apr.2014
Land: Danmark
Status: Offline
Point: 652
Direkte link til dette indlæg Sendt: 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)
Til top
Ib Hansen Se dropdown
Guld bruger
Guld bruger
Avatar

Medlem: 15.Apr.2014
Land: Danmark
Status: Offline
Point: 652
Direkte link til dette indlæg Sendt: 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)
Til top
EXCELGAARD Se dropdown
Platin bruger
Platin bruger


Medlem: 27.Dec.2012
Land: Denmark
Status: Offline
Point: 5412
Direkte link til dette indlæg Sendt: 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.
Til top
Ib Hansen Se dropdown
Guld bruger
Guld bruger
Avatar

Medlem: 15.Apr.2014
Land: Danmark
Status: Offline
Point: 652
Direkte link til dette indlæg Sendt: 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)
Til top
EXCELGAARD Se dropdown
Platin bruger
Platin bruger


Medlem: 27.Dec.2012
Land: Denmark
Status: Offline
Point: 5412
Direkte link til dette indlæg Sendt: 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.
Til top
Bjarnehansen Se dropdown
Platin bruger
Platin bruger
Avatar

Medlem: 20.Nov.2011
Land: DK
Status: Offline
Point: 5475
Direkte link til dette indlæg Sendt: 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
Til top
Ib Hansen Se dropdown
Guld bruger
Guld bruger
Avatar

Medlem: 15.Apr.2014
Land: Danmark
Status: Offline
Point: 652
Direkte link til dette indlæg Sendt: 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)
Til top
Ib Hansen Se dropdown
Guld bruger
Guld bruger
Avatar

Medlem: 15.Apr.2014
Land: Danmark
Status: Offline
Point: 652
Direkte link til dette indlæg Sendt: 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/" target="_blank" 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)
Til top
EXCELGAARD Se dropdown
Platin bruger
Platin bruger


Medlem: 27.Dec.2012
Land: Denmark
Status: Offline
Point: 5412
Direkte link til dette indlæg Sendt: 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.
Til top
 Besvar Besvar Side  12>

Skift forum Forum tilladelser Se dropdown

© 2010 - 2024 Dansk Regneark Forum - en del af Excel-regneark.dk