Avatar billede steensommer Praktikant
05. september 2003 - 14:55 Der er 22 kommentarer og
1 løsning

VBA Error problem

Følgende VBA har habbak lavet for mig. Koden søger i et antal regneark i en projektmappe kaldet CYP450 og giver resultatet på "forside".

Det har fungeret perfekt på flere computere med win/office xp og Server 2000(Office 2000 indtil jeg sendte filen til en anden bruger (og vores bærbare) hvor koden returnerer: Ingen fundet.

Jeg fjernede: On Error Resume Next: Horefter Error kode 13 fremkom og i VBA ses fejl ved linien:
If Error = 91 Then


Kan nogen hjælpe?

Sub FindOrd()
Dim Fundet(300, 5) As String, Sted(300) As String, Søg As Variant, I As Integer, T As Integer
Dim R As Integer, Side(300) As String
I = 1
On Error Resume Next
Range("D1").Select
  Sheets("Forside").AutoFilterMode = False
  Sheets("Forside").Select
  Range("B2:I301").Select            ' sletter alle data i området til hyperlink
    Selection.ClearContents
    Range("a1").Select
    Søg = InputBox("Søg på generisk eller handelsnavn", "Find medicinske præparater")
Application.ScreenUpdating = False
    For Each ws In Worksheets
If ws.Name <> "Forside" Then ' skift selv navnet på forsiden
      Sheets(ws.Name).Select
      Range("A1:H500").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
        If I > 1 Then I = I - 1
        GoTo Videre
        End If
        a = ActiveCell.Row
        If a = 1 Then GoTo Videre
        b = ActiveCell.Column
        Cells(a, b).Activate
        Side(I) = ws.Name
        Sted(I) = "'" & ws.Name & "'!" & ActiveCell.Address
        For T = 1 To 5
        Fundet(I, T) = Sheets(ws.Name).Cells(a, T).Value
        Next
          If I > 1 Then
        For T = 1 To I - 1
          If Sted(I) = Sted(T) Then
          GoTo Videre
        End If
        Next
      End If
      I = I + 1
    Do
      Cells.FindNext(After:=ActiveCell).Activate
        If Error = 91 Then
        Err.Clear
        If I > 1 Then I = I - 1
        GoTo Videre
        End If
        a = ActiveCell.Row
          If a = 1 Then GoTo Videre
        b = ActiveCell.Column
        Cells(a, b).Activate
        Side(I) = ws.Name
        Sted(I) = "'" & ws.Name & "'!" & ActiveCell.Address
        For T = 1 To 5
        Fundet(I, T) = Sheets(ws.Name).Cells(a, T).Value
        Next
      If I > 1 Then
        For T = 1 To I - 1
        If Sted(I) = Sted(T) Then
                GoTo Videre
          End If
        Next
      End If
     
      I = I + 1
  Loop
End If
Videre:
Next
Slut:
  Sheets("Forside").Select
  Application.ScreenUpdating = True
  For T = 1 To I - 1
    Worksheets("forside").Range("B2:F101").Cells(T, 1).Select
    For R = 1 To 5
      ActiveCell.Offset(0, R) = Fundet(T, R)
    Next
      ActiveCell.Select
        ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:=Sted(T)
        ActiveCell.FormulaR1C1 = Side(T) ' skriver hyperlink på alle fundne steder
      Next
    Range("D7").Select
      Selection.Sort Key1:=Range("C2"), Order1:=xlAscending, Key2:=Range("D2") _
        , Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:= _
        False, Orientation:=xlTopToBottom
          Range("C2").Select
    If I = 1 Then
      MsgBox " ingen fundet"
      End If
    Range("b1").Select
    Selection.AutoFilter
End Sub
Avatar billede jkrons Professor
05. september 2003 - 14:57 #1
Prøv at rette til If Err.Number = 91
Avatar billede steensommer Praktikant
05. september 2003 - 15:03 #2
Det hjalp desværre ikke :0(
Avatar billede jkrons Professor
05. september 2003 - 15:08 #3
Standser den stadig samme sted?
Avatar billede steensommer Praktikant
05. september 2003 - 15:23 #4
Ja
Avatar billede steensommer Praktikant
05. september 2003 - 15:26 #5
Den skriver Run-time error 13: Type mismatch. Herefter er ovenstående linie gulfarvet
Avatar billede steensommer Praktikant
05. september 2003 - 15:35 #6
Undskyld jkrons. Fejlen var angiveligt som du anførte. Jeg kom dels til glemme at gemme og dels havde jeg ikke genindsat: On Error Resume Next.
Nu fungerer den fint.  Tak for hjælpen igen, igen.
Selvom det måske er på en lidt billig baggrund så er vi da nogle der kan havde lidt gavn af den brækkede arm  :0))
Avatar billede steensommer Praktikant
05. september 2003 - 15:37 #7
Ved du hvorfor fejlen opstod og alligevel fungerede fint på nogle computere.
Avatar billede steensommer Praktikant
05. september 2003 - 16:09 #8
Ups fejlen skyldes angiveligt IKKE det nævnte idet der er flere ting den fortsat ikke kan finde. Jeg ved at de afviklende computere har Office 97 - mon problemet kunne være der?
Avatar billede bak Forsker
05. september 2003 - 16:13 #9
Hvilken xl version er der på den bærbare...?

Der nemlig lidt forskel på FIND funktionens muligheder i de forskellige versioner og det kan være derfor.
Avatar billede steensommer Praktikant
05. september 2003 - 16:14 #10
Excel 97 SR-2
Avatar billede bak Forsker
05. september 2003 - 16:14 #11
Nå, jeg havde lige glemt at opdatere og ikke set dit sidste indlæg, Steen
Avatar billede steensommer Praktikant
05. september 2003 - 16:15 #12
Det sker jo for os alle ;0)
Avatar billede bak Forsker
05. september 2003 - 16:18 #13
Hvis man optager en FIND makro i XP / 2000 er det ikke sikkert at kan køre i xl97, da der i disse er flere parametre end xl97. Jeg kan bare ikke lige huske hvilke parametre det er, der mangler i xl97
Avatar billede steensommer Praktikant
05. september 2003 - 16:19 #14
Ja hvis du ikke kan så er vi andre sgu' da ilde stedt
Avatar billede steensommer Praktikant
05. september 2003 - 16:34 #15
Jeg prøvede at indspille den makro du omtalte på excel 97 og alle parametrene fremgår også der. På Win XP/Office XP viser den fejl ved omtalte Find hvis man fjerner "On Error Resume Next".
Avatar billede bak Forsker
05. september 2003 - 16:48 #16
Ok, det har jeg så siden fundet ud af.
Det er kun i XP der er flere parametre.
Avatar billede kabbak Professor
05. september 2003 - 17:01 #17
Hej jeg er miderligtidig tilbage fra ferie.

If Err.Number = 91 Then

er fejlkoden for at den ikke her fundet noget på en side.

jeg sidder lige og tester i xl97 SR-2.

den kører også her med den rettelse, som jkrons skrev.

Steen husk lige at det står 2 steder, i koden.
Avatar billede steensommer Praktikant
05. september 2003 - 17:13 #18
Ja jeg forstod godt Error number 91 efter lidt tid. Her kommer det mærkelige:
I Excel XP skal der stå:                      Error for at fungere (alt fungerer)
I 97 fungerer dele af systemet hvis der står:  Err.Number. Det mærkelig er at nogle præparater godt kan findes (ex. Paracetamol) ens andre ikke findes (ex. Zarator)
Avatar billede kabbak Professor
05. september 2003 - 20:43 #19
Sub FindOrd()
Dim Fundet(300, 5) As String, Sted(300) As String, Søg As Variant, I As Integer, T As Integer
Dim R As Integer, Side(300) As String
I = 1
On Error Resume Next
Range("D1").Select
  Sheets("Forside").AutoFilterMode = False
  Sheets("Forside").Select
  Range("B2:I301").Select            ' sletter alle data i området til hyperlink
    Selection.ClearContents
    Range("a2").Select
    Søg = InputBox("Skriv søgestrengen på hvad der skal Findes", "Find medicinske præparater")
Application.ScreenUpdating = False
    For Each ws In Worksheets
If ws.Name <> "Forside" Then ' skift selv navnet på forsiden
      Sheets(ws.Name).Select
      Range("A1:H500").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 Err.Number = 91 Then
          Err.Clear
        GoTo Videre
        End If
        a = ActiveCell.Row
        If a = 1 Then GoTo Videre
        b = ActiveCell.Column
        Cells(a, b).Activate
        Side(I) = ws.Name
        Sted(I) = "'" & ws.Name & "'!" & ActiveCell.Address
        For T = 1 To 5
        Fundet(I, T) = Sheets(ws.Name).Cells(a, T).Value
        Next
          If I > 1 Then
        For T = 1 To I - 1
          If Sted(I) = Sted(T) Then
          GoTo Videre
        End If
        Next
      End If
      I = I + 1
    Do
      Cells.FindNext(After:=ActiveCell).Activate
        If Err.Number = 91 Then
        Err.Clear
        GoTo Videre
        End If
        a = ActiveCell.Row
          If a = 1 Then GoTo Videre
        b = ActiveCell.Column
        Cells(a, b).Activate
        Side(I) = ws.Name
        Sted(I) = "'" & ws.Name & "'!" & ActiveCell.Address
        For T = 1 To 5
        Fundet(I, T) = Sheets(ws.Name).Cells(a, T).Value
        Next
      If I > 1 Then
        For T = 1 To I - 1
        If Sted(I) = Sted(T) Then
                GoTo Videre
          End If
        Next
      End If
     
      I = I + 1
  Loop
End If
Videre:
Next
Slut:
  Sheets("Forside").Select
  Application.ScreenUpdating = True
  For T = 1 To I - 1
    Worksheets("forside").Range("B2:F101").Cells(T, 1).Select
    For R = 1 To 5
      ActiveCell.Offset(0, R) = Fundet(T, R)
    Next
      ActiveCell.Select
        ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:=Sted(T)
        ActiveCell.FormulaR1C1 = Side(T) ' skriver hyperlink på alle fundne steder
      Next
    Range("D7").Select
      Selection.Sort Key1:=Range("C2"), Order1:=xlAscending, Key2:=Range("D2") _
        , Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:= _
        False, Orientation:=xlTopToBottom
          Range("C2").Select
    If I = 1 Then
      MsgBox " ingen fundet"
      End If
    Range("D1").Select
    Selection.AutoFilter
End Sub

jeg har testet denne på både Xl 97 og 2000, og der kører den begge steder.

få ændringer er lavet.
Avatar billede steensommer Praktikant
05. september 2003 - 21:45 #20
-->habbak
Det lader til at alt kører som det skal i den nye variant - tusinde tak for hjælpen. Kan du give mig et hint om hvad problemet var?
Fortsat god ferie.
Avatar billede kabbak Professor
05. september 2003 - 21:56 #21
med hensyn til fejl, nej

jeg har ændret her

  If Error = 91 Then
        Err.Clear
        If I > 1 Then I = I - 1 'rem. denne linie er fjernet
        GoTo Videre
        End If

den linie der er fjernet, kan have noget at gøre med at den ikke fandt alle.
Avatar billede kabbak Professor
05. september 2003 - 21:57 #22
nb. det er kabbak og ikke habbak jeg kaldes
Avatar billede steensommer Praktikant
05. september 2003 - 22:01 #23
Sorry - god ferie og igen 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
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