Avatar billede snoopidoo Praktikant
13. juli 2007 - 14:24 Der er 12 kommentarer og
1 løsning

Skiftevis ændring af markerede rækkers baggrunsfarve

Jeg skal bruge en lille function til at kunne ændre baggrundsfarven i de markerede celler i et excelark.
Jeg fandt en lille function, som gør hvad jeg vil, men den gør det med hele bredden, og så et angivet antal rækker, og ikke bare det område man har markeret med musen.

koden ser sådan ud:
Sub Farve()
    For Række = 2 To 100 Step 2
        Rows(Række & ":" & Række).Select
        With Selection.Interior
            .ColorIndex = 15
            .Pattern = xlSolid
        End With
    Next Række
End Sub
Avatar billede excelent Ekspert
13. juli 2007 - 14:31 #1
marker område og kør - ikke testet

Sub Farve()
  With Selection.Interior
  .ColorIndex = 15
  .Pattern = xlSolid
  End With
End Sub
Avatar billede snoopidoo Praktikant
13. juli 2007 - 14:35 #2
Denne ændre fint nok farve på hele det markedere område, men det skal kun være hver anden række den skal ændre baggrundsfarve på.
Avatar billede x-lars Novice
13. juli 2007 - 15:23 #3
Marker det ønskede område med musen og kør denne:

Sub Farve()
    Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
        "=REST(RÆKKE();2)=0"
    Selection.FormatConditions(1).Interior.ColorIndex = 15
End Sub
Avatar billede snoopidoo Praktikant
13. juli 2007 - 16:04 #4
læg et svar X-lar. Det var lige hvad jeg skulle bruge.
Avatar billede x-lars Novice
13. juli 2007 - 16:32 #5
Gerne! Perfekt, at det virkede! ;-D
Avatar billede snoopidoo Praktikant
13. juli 2007 - 18:10 #6
Jeg troede ikke lige at det ville fungere som det gør nu, men det kan godt være at det bare er sådan det er, men når man har kørt makroen, er det bagefter ikke muligt at ændre farven igen.

Måske skulle jeg lægge et spørgsmål til for at løse det.
Avatar billede excelent Ekspert
13. juli 2007 - 19:18 #7
prøv:

Sub Step2()
For Each c In Selection
If c.Offset(-1, 0).Interior.ColorIndex <> 15 Then c.Interior.ColorIndex = 15
Next
End Sub
Avatar billede excelent Ekspert
13. juli 2007 - 19:27 #8
indsæt lige denne som linie 2:

On Error Resume Next
Avatar billede excelent Ekspert
13. juli 2007 - 19:33 #9
og husk lige at slette betinget format i området hvis du vælger min løsning
Avatar billede x-lars Novice
13. juli 2007 - 23:04 #10
Så tager den højde for gen-kørselproblemet. Når denne kode er kørt, kompenserer arket automatisk for, om du indsætter eller sletter nye rækker.

Sub Farve()
    Selection.FormatConditions.Delete
    Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
        "=REST(RÆKKE();2)=0"
    Selection.FormatConditions(1).Interior.ColorIndex = 15
End Sub
Avatar billede excelent Ekspert
14. juli 2007 - 09:37 #11
Sub Step2()
On Error Resume Next
Selection.Interior.ColorIndex = xlNone
Range(ActiveCell.Address).Resize(1, Selection.Columns.Count).Interior.ColorIndex = 15
For Each c In Selection
If c.Offset(-1, 0).Interior.ColorIndex <> 15 Then c.Interior.ColorIndex = 15
Next
End Sub
Avatar billede snoopidoo Praktikant
16. juli 2007 - 09:00 #12
Helt perfekt excelent.
Det er lige sådan det skal fungere.

Jeg har oprettet et andet spørgsmål, hvor jeg gerne vil give dig 75 point, for løsningen.
Spørgsmålet er her: http://www.eksperten.dk/spm/787705
Avatar billede excelent Ekspert
16. juli 2007 - 09:37 #13
ok fint den virker nu
- glem det med point, det er ok. :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester