Avatar billede perhol Seniormester
03. februar 2004 - 17:37 Der er 12 kommentarer og
1 løsning

Formatering i Excel 7.0

Man kan ikke lave betinget formatering i denne version af Excel, men det må være muligt at kode sig ud af problemet.
Det jeg gerne vil have er f.eks at cellerne B3 - B33, C3 - C33 og D3 - D33 skal farves under bestemte betingelser.
Cellerne i kolonne B skal farves hvis den tilsvarende celle i kolonne  C har værdien "Lø" eller "Sø" (ugedag formateret som kort navn med stort begyndelsesbogstav).
Cellerne i kolonne C skal farves hvis de har værdien "Lø" eller "Sø".
Cellerne i kolonne D skal farves hvis  cellen ikke er tom eller den tilsvarende celle i kolonne C har værdien "Lø" eller "Sø".
Er der nogen der kan hjælpe?
Avatar billede jkrons Professor
03. februar 2004 - 18:00 #1
Skal cellerne i D, fasrves uanset, hvad der står i C, bare de ikke er tomme?
Avatar billede jkrons Professor
03. februar 2004 - 18:03 #2
Hvis ovenstående er tilfældet, burde følgende kunne klare problemet:

Sub BetForm()


    For Each c In ActiveSheet.Range("b3:d33").Cells
        If Mid(c.Address, 2, 1) = "C" And c.Value = "Lø" Or c = "Sø" Then
            c.Interior.ColorIndex = 5
            c.Offset(0, -1).Interior.ColorIndex = 5
            c.Offset(0, 1).Interior.ColorIndex = 5
        End If
        If Mid(c.Address, 2, 1) = "D" And Not IsEmpty(c) Then
            c.Interior.ColorIndex = 9
        End If
    Next c
   
End Sub
Avatar billede perhol Seniormester
03. februar 2004 - 18:28 #3
Skal koden sættes ind som et VBA modul (sådan et der tester for helligdage er der i forvejen) eller skal det sættes ind i 'Vis programkode' når man højreklikker på arkets fane.
Avatar billede perhol Seniormester
03. februar 2004 - 18:32 #4
jkrons
Det lader til at du får pointene, blot bliver alle celler i kolonne D 3-33 farvet, uanset om de er tomme eller ej.
Kan det laves så hver enkelt celle i D3-D33 kun bliver farvet hvis enten den ikke er tom eller tilsvarende celle i kolonne B har værdien "Sø"?
Avatar billede kabbak Professor
03. februar 2004 - 21:17 #5
En modificeret udgave af jkrons

den fjerner farverne inden den kører.


Den er lavet i excel 2000, håber at koderne virker i din version.

Sub BetForm()
    For Each c In ActiveSheet.Range("C3:C33").Cells
        c.Interior.ColorIndex = xlNone
            c.Offset(0, -1).Interior.ColorIndex = xlNone
            c.Offset(0, 1).Interior.ColorIndex = xlNone
           
      ' hvis det er en dato der har formatet ddd bruges den næste linie
        '  If Weekday(c.Value, vbMonday) = 6 Or Weekday(c.Value, vbMonday) = 7 Then
     
          ' hvis det er tekst bruges den næste linie
          If c.Value = "Lø" Or c = "Sø" Then
            c.Interior.ColorIndex = 5
            c.Offset(0, -1).Interior.ColorIndex = 5
            c.Offset(0, 1).Interior.ColorIndex = 5
        End If
        If c.Offset(0, 1) <> "" And Not IsEmpty(c) Then
        c.Offset(0, 1).Interior.ColorIndex = 5
        End If
    Next c
   
End Sub
Avatar billede perhol Seniormester
03. februar 2004 - 22:05 #6
kabbak
Din modificerede udgave virkede perfekt.
Hvad nu med point?
PS. Den samme kode vil jeg gerne have til at virke på kolonne F-G-H og kolonne J-K-L og kolonne N-O-P og kolonne R-S-T og kolonne V-W-X og kolonne Z-AA-AB og kolonne AD-AE-AF og kolonne AH-AI-AJ og kolonne AL-AM-AN og kolonne AP-AQ-AR samt kolonne AT-AU-AV (det må du altså undskylde, men det er en kalender - altså 12*3 kolonner)
kan jeg bare gentage koden og så ændre området eller hvad.
Og hvordan får jeg koden udført når arket åbnes og hvis der laves ændringer.
Avatar billede kabbak Professor
03. februar 2004 - 23:59 #7
Maker alle de celler i de kolonner der indeholder dagene.

Altså C3:C33, G3:G33, osv.

Når alle celler fra 3 til 33, i de 12 kolonner er makeret, klik så ind, der hvor du plejer at se celle navnet,( øverste venstre hjørne ), slet det der står og skriv:

DagCol

tryk enter sp du er ude af boksen.

nu skulle du ved at trykke på pilen ved boksen se navnet DagCol, hvis det er der er det ok.

ret så denne linie i makroen,

  For Each c In ActiveSheet.Range("C3:C33").Cells

til

  For Each c In ActiveSheet.Range("DagCol").Cells

så skulle det køre
Avatar billede perhol Seniormester
04. februar 2004 - 00:15 #8
Fantastisk, det er jo det rene trylleri.
Kan man også få trylleriet til at virke sådan at koden køres hver gang filen åbnes og hver gang nogen foretager ændringer i den.
Det kunne jo godt være at man engang ad åre ønskede at udskrive en kalender for et nyt år!
Avatar billede perhol Seniormester
04. februar 2004 - 00:17 #9
Og her har du så dine point kabbak.
jkrons, er det OK med dig, ellers må du sige til.
Avatar billede kabbak Professor
04. februar 2004 - 00:39 #10
hvis du sætter koden i dit arkmodul, så kører den hver gang du kommer ind på arket.

det der denne

Private Sub Worksheet_Activate()
' her skal koden være
End Sub
Avatar billede kabbak Professor
04. februar 2004 - 00:39 #11
og tak for pointz ;-))
Avatar billede perhol Seniormester
04. februar 2004 - 01:04 #12
kabbak
Jamen det er da mig der takker.
Jeg har prøvet din sidste anvisning, men den kan jeg ikke få til at virke, måske fordi jeg prøver den i version 2003 af Excel, men den skal virke i en version 7.0.
Men jeg er meget tilfreds med resultatet. Jeg har tildelt makroen til en knap i værktøjslinien samt til en genvejstast. Det gør det meget let at udføre farvning af weekender og helligdage.
Tak endnu engang
Avatar billede jkrons Professor
04. februar 2004 - 09:04 #13
Helt i orden at give point til kabbak. Af en eller anden grund får jeg kun få mails fra Eksperten pt, så derfor havde jeg ikke set, at du havde spurgt igen.
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