Avatar billede ambs Nybegynder
26. marts 2004 - 14:23 Der er 19 kommentarer og
1 løsning

betingen formatering som macro formel?

Jeg ville høre om der er nogen der ved hvordan man skriver en betingen formatering ind som macro-formel, det den hel præsist skal gøre, er at hvis der der står #N/A i en celle, skal den lave en betinget formatering, med skriftfarven hvid.

Mvh André
Avatar billede Slettet bruger
26. marts 2004 - 14:25 #1
Er det ikke nemmere at bruge almindelig betinget formatering ?
Avatar billede ambs Nybegynder
26. marts 2004 - 14:37 #2
Det er fordi jeg lavet 4 macros men en masse foruddefineret formler i og når jeg aktivere dem, sletter de den betinget formatering, så jeg ville gerne have den ind i, eller en måde til at omgå macroen.

Mvh André
Avatar billede ambs Nybegynder
26. marts 2004 - 14:42 #3
Tager hjem fra arbejde nu, så der går nok lidt inden svar, på jeres evt. svar.

Mvh André
Avatar billede Slettet bruger
26. marts 2004 - 18:46 #4
Her er en makro der genskaber formateringen i et markeret område.

-----------------------
Sub genskabFormater()

    ' Sletter gammel betinget formatering
    Selection.FormatConditions.Delete
   
    ' Indsætter ny betinget formatering baseret på formel
    Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=IF(ISNA($A$1);TRUE;FALSE)"
   
    ' Font farve sættes til 2 (hvid) hvis betingelse er opfyldt
    Selection.FormatConditions(1).Font.ColorIndex = 2
   
End Sub
------------------------
Avatar billede ambs Nybegynder
26. marts 2004 - 20:11 #5
Hej Blackadder

Jeg får denne fejl, når jeg debugger:

Compile error:
Ambiguous name detected: genskabFomater

Jeg cutter og paster den bare ik'?

jeg bruger Eng. Excel har det noget med det at gøre?

Mvh André
Avatar billede Slettet bruger
26. marts 2004 - 21:13 #6
Start med at kalde den noget andet. f.eks.
genskabBetingetFormater()

Du skal bare cut og paste koden in i et kode modul i dit ark.

Det burde også virke i engelsk Excel.
Avatar billede ambs Nybegynder
26. marts 2004 - 21:53 #7
Nu får jeg en ny Compile error, hele tiden i den forgående linie, uanset hvor jeg pladsere koden, her er hvad den siger: Expected End Sub, siger det dig noget?

Mvh André
Avatar billede Slettet bruger
26. marts 2004 - 22:01 #8
Når du bruger makroen, skal du:
1. Markere cellerne
2. Aktivere makroen

Koden burde se sådan ud nu:

-----------------------
Sub genskabBetingetFormater()

    ' Sletter gammel betinget formatering
    Selection.FormatConditions.Delete
   
    ' Indsætter ny betinget formatering baseret på formel
    Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=IF(ISNA($A$1);TRUE;FALSE)"
   
    ' Font farve sættes til 2 (hvid) hvis betingelse er opfyldt
    Selection.FormatConditions(1).Font.ColorIndex = 2
   
End Sub
-----------------------

Hvor har du placeret koden ?
Avatar billede ambs Nybegynder
26. marts 2004 - 22:18 #9
Er det her rigtigt?

Range("E6:E74").Select
    Sub genskabBetingetFormater()

    ' Sletter gammel betinget formatering
    Selection.FormatConditions.Delete
   
    ' Indsætter ny betinget formatering baseret på formel
    Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=IF(ISNA(E6:E74);TRUE;FALSE)"
   
    ' Font farve sættes til 2 (hvid) hvis betingelse er opfyldt
    Selection.FormatConditions(1).Font.ColorIndex = 2
   
End Sub

Og jeg indsætter den i bunden af min nuværende macro.

Mvh André
Avatar billede Slettet bruger
26. marts 2004 - 22:27 #10
Formlen:
"=IF(ISNA(E6:E74);TRUE;FALSE)" skal ændres til
"=IF(ISNA($E$6:$E$74);TRUE;FALSE)"

Hvis du vil tilføje den til bunden af en eksisterende makro skal du fjerne
linierne:

Sub genskabBetingetFormater()

og

End Sub

dog ikke den "End Sub" der afslutter den eksisterende makro.
Avatar billede ambs Nybegynder
26. marts 2004 - 22:42 #11
Lige nu ser den sådan ud:
    Range("E6:E74").Select
   
    ' Sletter gammel betinget formatering
    Selection.FormatConditions.Delete
   
    ' Indsætter ny betinget formatering baseret på formel
    Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=IF(ISNA($E$6:$E$74);TRUE;FALSE)"

   
    ' Font farve sættes til 2 (hvid) hvis betingelse er opfyldt
    Selection.FormatConditions(1).Font.ColorIndex = 2

End Sub

Men det vil stadig ikke virke, der skulle ikke være noget andet i min macro, der kunne gå ind og påvirke formlen, da næsten hele macroen er disabled lige nu, med undtagelse af en kode der henviser til et andet ark, hvad kan jeg lave forkert?

Mvh André
Avatar billede Slettet bruger
26. marts 2004 - 22:50 #12
Lad mig lige se om jeg har forstået spørgsmålet.

Du vil gerne markere et område, og derefter genskabe de betingede formateringer.
Men du vil kun have hvid skrift de i de celler der har værdien "#N/A".
Er det korrekt ?

Er det de samme celler der skal genskabes hver gang ?
Avatar billede ambs Nybegynder
26. marts 2004 - 22:58 #13
Jeg har en formel der ser sådan her ud: =IF(B39<>"";E38+B39-C39;#N/A), Den køre fra E6:E74, det jeg så vil have er at når formlens resultat er = #N/A i cellen, så skal din formel gå ind og lave en betingede formatering i den pågældende celle, ellers ikke, den skal ikke genskabe den betingede formatering, for den findes ikke i forvejen, kun skabe den.
Håber jeg har gjort mig forstålig.

Mvh André
Avatar billede ambs Nybegynder
26. marts 2004 - 23:30 #14
Nu har jeg så fået din formel til at virke, alle andre steder end lige der hvor den skal *dohh* Er der noget i min formel, der modvirker din??
Men nu går jeg i seng, håber at se dig herinde imorgen igen, men du skal nok få point, men det bliver når jeg er stået op.

Mvh André
Avatar billede Slettet bruger
26. marts 2004 - 23:30 #15
Prøv med:

----------
For Each c In Range("E6:E74")
    If Application.WorksheetFunction.IsNA(c.Value) Then
        c.Font.ColorIndex = 2
    End If
Next c
----------

istedet for
Avatar billede ambs Nybegynder
27. marts 2004 - 08:36 #16
Nu virker din formel, så i mit ark, hvor den skal, men der er bare det lille problem nu, at den virker på hele min formel, hvad enten resutatet er #N/A eller et tal resultat, har du et forslag til at rette det?

Mvh André
Avatar billede Slettet bruger
27. marts 2004 - 13:06 #17
Kan du prøve at ændre din formel fra:
=IF(B39<>"";E38+B39-C39;#N/A)

til

=IF(B39<>"";E38+B39-C39;NA())

og se om ikke det hjælper.

NA() funktionen returnerer fejlværdien #N/A.
Avatar billede Slettet bruger
27. marts 2004 - 15:49 #18
En alternativ makro:

--------------------------------
Sub BetingetFormater()
   
    For Each c In Range("E6:E74")
        With c
            .FormatConditions.Delete
            .FormatConditions.Add Type:=xlExpression, Formula1:="=IF(ISNA(" + c.Address + ");TRUE;FALSE)"
            .FormatConditions(1).Font.ColorIndex = 2
        End With
    Next c
   
End Sub
--------------------------------
Avatar billede ambs Nybegynder
28. marts 2004 - 13:37 #19
Mange tak blackadder

Nu virker det hele som det skal. 60 point er på vej i din retning, endnu engang mange tak.

Mvh André
Avatar billede Slettet bruger
28. marts 2004 - 18:18 #20
OK, tak for point  :-)
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
Vi har et stort udvalg af Excel kurser. Find lige det kursus der passer dig lige her.

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