16. januar 2013 - 11:08Der er
10 kommentarer og 1 løsning
Run-time Error 1004: Application-defined or object-defined error
Hej.
Jeg er relativ ny bruger af Excel VBA og er løbet ind i et problem. Når jeg kører en makro får jeg fejlmeddelelse Run-time Error 1004: Application-defined or object-defined error.
Fejlen ligger i "Set searchRange"-delen forneden, lastCol og lastRow defineres fint (24 og 262754)
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
Hej, Tak for det. Jeg satte ikke resten af koden ind for at gøre fejlen mere synlig, men her er hele modulet:
Sub Søg(søgeOrd1 As String, Optional søgeOrd2 As String) Dim tæller As Integer Dim wsAntal As Integer Dim firstAddress As String Static fundne As Integer Dim c As Range Dim d As Range Dim currentRow As Long Dim searchRange As Range Dim lastCol As Integer Dim lastRow As Long
fundne = 2 With searchRange Set c = .Find(what:=søgeOrd1, LookIn:=xlValues, LookAt:=xlPart, searchorder:=xlByRows, _ searchdirection:=xlNext, MatchCase:=False, SearchFormat:=False) If Not c Is Nothing Then firstAddress = c.Address Do currentRow = Range(c.Address).Row Worksheets("prisDB").Range(Cells(currentRow, 1)).EntireRow.Copy Worksheets("SøgeArk").Range("A" & fundne) fundne = fundne + 1 Set c = .FindNext(c) Loop While Not c Is Nothing And c.Address <> firstAddress End If '2. søgning If søgeOrd2 <> "" Then Set d = .Find(what:=søgeOrd2, LookIn:=xlValues, LookAt:=xlPart, searchorder:=xlByRows, _ searchdirection:=xlNext, MatchCase:=False, SearchFormat:=False) If Not d Is Nothing Then firstAddress = d.Address Do currentRow = Range(d.Address).Row Worksheets("prisDB").Range(Cells(currentRow, 1)).EntireRow.Copy Worksheets("SøgeArk").Range("A" & fundne) fundne = fundne + 1 Set d = .FindNext(d) Loop While Not d Is Nothing And d.Address <> firstAddress End If End If End With
Application.EnableEvents = True 'Application.ShowWindowsInTaskbar = True Application.DisplayAlerts = True Application.ScreenUpdating = True If Range("A2") = "" Then MsgBox "Ingen match på din søgning", vbOKOnly + vbCritical, "Resultat" Fejl: If Err.Number <> 0 Then MsgBox "Der er sket en fejl i filen " & ActiveWorkbook.Name & " | Modul modFunktioner | Sub Fejlhåndtering: " & Err.Description End If End Sub
Jeg får søgeOrd1 og søgeOrd2 fra en Userform - det virker tilsyneladende godt nok.
Det lykkedes mig at finde en vej rundt ved at bruge CurrentRegion: Set searchRange = Worksheets("prisDB").Range("A1").CurrentRegion
Den regneark der søges på udfyldes af et andet program jeg har lavet, så jeg kan sikre mig at der ikke er "huller" i det. Ikke videre elegant - men det virker :-).
Husk at lukke spørgsmålet - Accepter blot et af dine Svar og Afvis de øvrige.
Synes godt om
Ny brugerNybegynder
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.