Avatar billede tvc Seniormester
23. april 2010 - 10:04 Der er 8 kommentarer og
1 løsning

VBA - formatering

Hej

Jeg vil gerne via en vba kode have, at der skal søges i arket af et bestemt ord i en formel. Når ordet findes i formlen, skal cellen markeres med rød ellers skal cellen have det oprindelig format.

Mvh. TVC
Avatar billede store-morten Ekspert
23. april 2010 - 10:24 #1
Sub SøgFarvRød()
Søgstr = InputBox(" Søgestreng")

    Cells.Find(What:=Søgstr, After:=ActiveCell, LookIn:=xlValues, _
        LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False).Activate
        ActiveCell.Interior.ColorIndex = 3
        Old = ActiveCell.Address
        Do
    Cells.FindNext(After:=ActiveCell).Activate
    ActiveCell.Interior.ColorIndex = 3
    Loop Until Old = ActiveCell.Address
End Sub
Avatar billede store-morten Ekspert
23. april 2010 - 10:36 #2
Undskyld.
Søger kun på ord i celler.
Avatar billede supertekst Ekspert
23. april 2010 - 11:59 #3
Et bud:

Sub SøgOgFarvRød()
Dim søgEfter As String, cc
Dim xRæk As Long, xKol As Long

    xRæk = ActiveCell.SpecialCells(xlLastCell).Row
    xKol = ActiveCell.SpecialCells(xlLastCell).Column
   
    søgEfter = InputBox(" Søgestreng")
   
    Range(Cells(1, 1), Cells(xRæk, xKol)).Select
   
    For Each cc In Selection.Cells
        If cc.HasFormula = True Then
            If InStr(LCase(cc.Formula), søgEfter) > 0 Then
                cc.Interior.ColorIndex = 3
            End If
        End If
    Next cc
End Sub
Avatar billede tvc Seniormester
24. april 2010 - 18:44 #4
Supertekst - tak for hjælpen - lægger u et svar?

Har rettet lidt selv:

Sub SøgOgFarvRød()
Dim søgEfter As String, cc
Dim xRæk As Long, xKol As Long

    xRæk = ActiveCell.SpecialCells(xlLastCell).Row
    xKol = ActiveCell.SpecialCells(xlLastCell).Column
   
    søgEfter = InputBox(" Søgestreng")
   
    Range(Cells(1, 1), Cells(xRæk, xKol)).Select
   
   
   
    For Each cc In Selection.Cells
        cc.Interior.ColorIndex = xlColorIndexNone

        If cc.HasFormula = True Then
            If InStr(LCase(cc.Formula), søgEfter) > 0 Then
                cc.Interior.ColorIndex = 3
            End If
        End If
    Next cc
End Sub
Avatar billede tvc Seniormester
24. april 2010 - 19:04 #5
Du tror det er løgn, men den virkede og nu virker den så ikke. Kan linjen cc.Interior.ColorIndex = xlColorIndexNone have slået noget helt fra i Excel?
Avatar billede excelent Ekspert
24. april 2010 - 20:06 #6
Ret
If InStr(LCase(cc.Formula), søgEfter) > 0 Then
til
If InStr(UCase(cc.FormulaLocal), UCase(søgEfter)) > 0 Then

Vær opmærksom på at en formel som fx
=SUM.HVIS($D$2:$M$2;"=1";D3:M3)
opfattes af VBA som
SUMIF($D$2:$M$2,"=1",D3:M3)

Derfor ændring af: Formula til FormulaLocal
så læses den som lokalsprog
Avatar billede supertekst Ekspert
24. april 2010 - 20:59 #7
Ok - men lad excelent få ½-del :-)
Avatar billede excelent Ekspert
24. april 2010 - 21:16 #8
jeg står over, var blot en sidebemærkning :-)
Avatar billede tvc Seniormester
24. april 2010 - 21:36 #9
Tak for hjælpen begge.
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