Avatar billede lortepc Nybegynder
17. november 2009 - 18:42 Der er 3 kommentarer og
1 løsning

Vælge range automatisk

Hej Alle

Har følgende kode, som leder efter ord i tekststrenge i en kolonne udfra ord i en anden workbook...

Hvordan vælger jeg automatisk alle cellerne i kolonne A, book1 som indeholder noget?.
Det samme skal gælde for (For Each c In Selection.Cells) Jeg vil ikke selv vælge cellerne i kolonnen, alle celler som indeholder noget skal bare markeres i Kolonne A

Sub FindOrd()
On Error Resume Next
    Dim varX As String
    Dim FindOrd As String
    Dim varY As String
    FindOrd = ""
        For Each c In Selection.Cells
            FindOrd = ""
            For Each x In Workbooks("Book1.xls").Sheets(1).Range("A1:A10").Cells
                varX = InStr(1, c.Value, x.Value)
                If varX <> 0 Then
                    varY = InStr(varX, c.Value, " ")
                    If varY = 0 Then
                        FindOrd = FindOrd & Mid(c.Value, varX, Len(c.Value)) & ", "
                    Else
                        FindOrd = FindOrd & Mid(c.Value, varX, varY - varX) & ", "
                    End If
                End If
            Next x
            c.Offset(0, 1).Value = FindOrd
        Next c
End Sub
Avatar billede excelent Ekspert
17. november 2009 - 20:18 #1
prøv :

Sub FindOrd()
On Error Resume Next
'---------------------------
Dim bok1 As Workbook
Dim bok2 As Workbook
Set bok1 = Workbooks("test1.xls")
Set rng1 = bok1.Sheets(1).Range("A1:A" & bok1.Sheets(1).Cells(65536, 1).End(xlUp).Row)

Set bok2 = Workbooks("Book1.xls")
Set rng2 = bok2.Sheets(1).Range("A1:A" & bok2.Sheets(1).Cells(65536, 1).End(xlUp).Row)
'---------------------------
    Dim varX As String
    Dim FindOrd As String
    Dim varY As String
    FindOrd = ""
        For Each c In rng1 '--------Selection.Cells
            FindOrd = ""
            For Each x In rng2 '--------Workbooks("Book1.xls").Sheets(1).Range("A1:A10").Cells
                varX = InStr(1, c.Value, x.Value)
                If varX <> 0 Then
                    varY = InStr(varX, c.Value, " ")
                    If varY = 0 Then
                        FindOrd = FindOrd & Mid(c.Value, varX, Len(c.Value)) & ", "
                    Else
                        FindOrd = FindOrd & Mid(c.Value, varX, varY - varX) & ", "
                    End If
                End If
            Next x
            c.Offset(0, 1).Value = FindOrd
        Next c
End Sub
Avatar billede excelent Ekspert
17. november 2009 - 20:24 #2
ret test1 til dit projektmappenavn i denne linie
Set bok1 = Workbooks("test1.xls")
Avatar billede lortepc Nybegynder
17. november 2009 - 20:38 #3
Hej execent

Det virker fint! mange tak! smid et svar
Avatar billede excelent Ekspert
17. november 2009 - 20:41 #4
ok velbekom
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