Avatar billede finnholm Nybegynder
14. september 2005 - 13:10 Der er 4 kommentarer og
1 løsning

Søgning i flere ark

Jeg skal søge efter et varenr i 200 ark. Hvordan laver jeg et gennemløb som søger efter en værdi i det aktive ark, og hvis den ikke finder noget skal den bare gå videre til arket til højre for og søge videre. Findes værdien skal makroen stoppe.

Jeg har følg. indtil videre, men kan ikke rigtig finde den rigtig opskrift!

    Dim xFind As Variant
   
    xFind = InputBox("Søg efter:", Søgning)

    ActiveSheet.Next.Select

Hvordan sættes denne do..loop ind?
Avatar billede finnholm Nybegynder
14. september 2005 - 13:38 #1
Jeg prøvet med dette, men kan ikke få den til at stoppe når den har fundet værdien. Værdien står i kol A sådan "Varenr 184". Jeg søger på 184.

    Dim xFind As Variant
   
    xFind = InputBox("Søg efter:", Søgning)
   
    With Columns("A:a")
            Set c = .Find(xFind, LookIn:=xlFormulas, _
            LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
            MatchCase:=False)
           
            If c Is Nothing Then
                Do
                ActiveSheet.Next.Select
                Set c = .Find(xFind, LookIn:=xlFormulas, _
                LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
                MatchCase:=False)
                Loop While c Is Nothing
            Else
            Exit Sub
            End If
    End With
End Sub
Avatar billede kabbak Professor
14. september 2005 - 13:57 #2
Sub FindOrd()
Dim Søg As Variant, I As Integer
Dim R As Integer
I = 1
On Error Resume Next
    Søg = InputBox("Søg efter :", "Søgning")
Application.ScreenUpdating = False
    For Each ws In Worksheets
      Sheets(ws.Name).Select
      Range("A:A").Select 'området den søger på ret det selv til
      Selection.Find(What:=Søg, After:=ActiveCell, LookIn:=xlFormulas, _
        LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False).Activate
        If Error = 91 Then
        Err.Clear
        GoTo Videre
        End If
        A = ActiveCell.Row
        If A = 1 Then GoTo Videre
              Sheets(ws.Name).Cells(ActiveCell.Row, ActiveCell.Column).Select
        Exit Sub
      I = I + 1
Videre:
Next
End Sub
Avatar billede finnholm Nybegynder
14. september 2005 - 14:03 #3
Det virker fint - tusind tak.


For at forstå at min ikke virker, ved du så hvorfor søgningen virker i første "Set"       
  Set c = .Find(xFind, LookIn:=xlFormulas, _
            LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
            MatchCase:=False)
           
            If c Is Nothing Then
                Do
                ActiveSheet.Next.Select

Men IKKE i dette step.....???????

                Set c = .Find(xFind, LookIn:=xlFormulas, _
                LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
                MatchCase:=False)
                Loop While c Is Nothing
            Else
            Exit Sub
            End If

Ligger du svar
Avatar billede kabbak Professor
14. september 2005 - 14:24 #4
Har ikke lige tid til at gennemskue forskellen, mellem de 2 eksempler.

Men du får et svar
Avatar billede finnholm Nybegynder
14. september 2005 - 14:25 #5
Helt fint - tusind tak for hjælpen......
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

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