Avatar billede hajhaj Nybegynder
11. maj 2010 - 14:38 Der er 2 kommentarer

ændre kode eksempel til at omfatte range med navne

Kan du hjælpe med at rette nedenstående, således at myWords istedet er et range (A1:A3), der indeholder de tre navne?
Og hvad sker der hvis range indeholder en tom celle?

mvh HAJ


Sub ColorandBold()
    'USE-COLOR AND BOLD TEXT STRINGS WITHIN TEXT EXCEL VBA
    'BROUGHT TO YOU BY www.PROGRAMMINGLIBRARY.COM
    'CREATED BY MARK SLOBODA
   
    '************************* DEC VARS *******************************
    Dim myCell As Range
    Dim myRng As Range
    Dim FirstAddress As String
    Dim iCtr As Long
    Dim letCtr As Long
    Dim startrow As Long 'BEGINNING OF RANGE
    Dim endrow As Long ' END OF RANGE
    Dim startcolumn As Integer 'BEGINNING COLUMN
    Dim endcolumn As Integer 'END COLUMN
   
    '************************* SET VALUES*****************************
    'DUMMY VALUES - COULD BE PASSED
    startrow = 2
    endrow = 5
    startcolumn = 1
    endcolumn = 2
   
    'SET UP RANGE YOU ARE COLORING AND BOLDING -YOU COULD MODIFY TO PASS VALUE TO
    Set myRng = Range(Cells(startrow, startcolumn), Cells(endrow, endcolumn))
   
    'SET UP ARRAY WITH WORDS YOU WANT TO COLOR AND BOLD - YOU COULD PUSH VALUES FROM A LISTBOX TO THIS ARRAY
    myWords = Array("dog", "cat", "hamster")
   
    'BEGIN MASTER LOOP---------------------------------------
    For iCtr = LBound(myWords) To UBound(myWords)
        'ERROR FOUND-BYPASS
        On Error Resume Next
        With myRng
            Set myCell = .Find(What:=myWords(iCtr), After:=.Cells(1), _
            LookIn:=xlValues, LookAt:=xlPart, _
            SearchOrder:=xlByRows, _
            SearchDirection:=xlNext, _
            MatchCase:=False)
            'LOGIC CHECK
            If Not myCell Is Nothing Then
                FirstAddress = myCell.Address
               
                Do
                    For letCtr = 1 To Len(myCell.Value)
                        If StrComp(Mid(myCell.Value, letCtr, _
                        Len(myWords(iCtr))), _
                        myWords(iCtr), vbTextCompare) = 0 Then
                            myCell.Characters(Start:=letCtr, _
                            Length:=Len(myWords(iCtr))) _
                            .Font.ColorIndex = 5
                        End If
                       
                    Next letCtr
                   
                    For letCtr = 1 To Len(myCell.Value)
                        If StrComp(Mid(myCell.Value, letCtr, _
                        Len(myWords(iCtr))), _
                        myWords(iCtr), vbTextCompare) = 0 Then
                            myCell.Characters(Start:=letCtr, _
                            Length:=Len(myWords(iCtr))) _
                            .Font.FontStyle = "Bold"
                        End If
                    Next letCtr
                   
                    'GET NEXT ADDRESS
                    Set myCell = .FindNext(myCell)
                   
                Loop While Not myCell Is Nothing _
                And myCell.Address <> FirstAddress
            End If
        End With
    Next iCtr
End Sub
Avatar billede kabbak Professor
11. maj 2010 - 17:35 #1
myWords = Sheets("Ark1"):Range("A1:A3")

men så bliver den i to dimensioner, den anden har kun 1
så hvor der star noget med MyWords, skal det rettes fra
  Len(myWords(iCtr)))

til

  Len(myWords(iCtr,1)))
Avatar billede kabbak Professor
11. maj 2010 - 17:35 #2
myWords = Sheets("Ark1"):Range("A1:A3")
skal være
myWords = Sheets("Ark1").Range("A1:A3")
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