Avatar billede daki Juniormester
14. juni 2006 - 16:47 Der er 4 kommentarer og
1 løsning

Forklaring til macro

Jeg ved at nedenstående sammenligner celler i kolonne G og I og farver teksten efter hvorstor diff. er i forhold til hinanden.
Men jeg ønsker en nærmere forklaring til de enkelte linier:

Dim C As Range
Range("G2").Select
Range(Selection, Selection.End(xlDown)).Select
For Each C In Selection.Cells
If C.Value > C.Offset(0, 2).Value Then
  C.Offset(0, 2).Font.ColorIndex = 3
ElseIf (C.Value + (C.Value / 10)) <= C.Offset(0, 2).Value Then
  C.Offset(0, 2).Font.ColorIndex = 5
Else
  C.Offset(0, 2).Font.ColorIndex = 1
End If
Next
Range("A1").Select
Avatar billede brynil Nybegynder
14. juni 2006 - 17:36 #1
Prøv at debugge (F8) så du kører koden én linie ad gangen. Du kan se hvad der sker på arket og når du lader musen hvile på en variabel i koden kan du se hvilken værdi den er tildelt. Sammenholdt kan du regne ud hvad der foregår.
Avatar billede bak Forsker
14. juni 2006 - 18:57 #2
Sub test()
Dim C As Range
'marker celle G2
Range("G2").Select
'Marker fra G2 til første tomme celle i kolonne G
Range(Selection, Selection.End(xlDown)).Select
'for hver celle i markeringen gør.....
For Each C In Selection.Cells
'hvis cellen er større end den i samme række i kolonne I så..
    If C.Value > C.Offset(0, 2).Value Then
        'farv cellen i kolonne I med farve 3
        C.Offset(0, 2).Font.ColorIndex = 3
        'ellers hvis cellen + 10% er mindre end cellen i kol. I, så...
    ElseIf (C.Value + (C.Value / 10)) <= C.Offset(0, 2).Value Then
        'farv celleen i kol. I med farve 5
        C.Offset(0, 2).Font.ColorIndex = 5
    Else
        'hvis inden af de to førstnævne er sand så farv cellen i kol I med farve 1
        C.Offset(0, 2).Font.ColorIndex = 1
    End If
Next
Range("A1").Select
End Sub
Avatar billede daki Juniormester
14. juni 2006 - 23:05 #3
Tak bak.
Mit problem er nemlig, at nogle celler i kol. I farves '3' selvom cellen i kol. G er = cellen i kol. I.
Så jeg var bange for, at der skulle være noget i vejen med koden.

NB.
cellen i kol. G er = cellen i kol. E eller cellen i kol. E*1,25 med 2 decimaler kol. E kommer fra en *.txt hvor der kun trækkes 2 decimaler med over.
Avatar billede daki Juniormester
15. juni 2006 - 16:22 #4
Jeg har gjort følgende:
Columns("I:I").Select
Selection.Copy
Columns("I:I").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
Columns("G:G").Select
Application.CutCopyMode = False
Selection.Copy
Columns("G:G").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False

Alstå kopiere kolonne G og I - indsæt speciel (værdi), så begge kolonner er ens.
Nu er alle celler korrekt farvet.
Avatar billede daki Juniormester
27. juni 2006 - 16:43 #5
lukker !
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
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

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