14. juni 2019 - 11:26 Der er 5 kommentarer

VBA - Method 'Range' of object'_Worksheet' failed

Hej allesammen.

Jeg sidder med en makro der driller mig, og nu har jeg stirret mig blind på løsningen som jeg ved er simpel, jeg har bare ikke helt fattet hvordan jeg omskriver de 2 linjer der fejler.

Hvis jeg kører makroen step for step virker den perfekt hvis jeg selv vælger arkene når den når til linjerne:

trailerliste.Range(Cells(t, 1), Cells(t, 13)).Copy

og

reportsheet.Range(Cells(i, 1), Cells(i, 13)).PasteSpecial xlPasteValues

men jeg får fejlen: Runtime error 1004 - Method 'Range' of object'_Worksheet' failed når jeg kører kommer til den første overstående linje...

Hele koden ser således ud:

Sub Sæt_ind_i_eksporten()

Dim reportsheet As Worksheet 'Hvor udsøgt data sættes ind
Dim trailerliste As Worksheet 'Hvor ny data findes
Dim trailernummer As String 'Sætter trailerne i variabel
Dim finalrow As Integer 'Finder sidste række i et reportsheet
Dim i As Integer 'Tæl rækker i loopet
Dim t As Integer 'Tæl rækker for target(Trailere) navnene
Dim targetcount As Integer 'Hvor mange target navne(Trailere) der findes

'Set variabler
Set trailerliste = Worksheets("Data ud (2)")
Set reportsheet = Worksheets("18")

Application.ScreenUpdating = False

targetcount = trailerliste.Cells(30, 1).End(xlDown).Row 'Finder sidste tomme celle i ("Data ud 2") sorterede del.
'Denne fortæller hvor mange gange trailer loopet skal køre

'Tæl hvor mange linjer der skal søges trailere i
finalrow = Cells(Rows.Count, 1).End(xlUp).Row

'Loop igennem target navne (Trailere)
For t = 30 To targetcount 'Det første navn findes i celle 1, 1
trailernummer = trailerliste.Cells(t, 3).Value 'Her hentes første celleværdi i trailerlisten

'Loop gennem rækkerne for at finde match
For i = 4 To finalrow
    If Cells(i, 3) = trailernummer Then 'Hvis værdien i cellen er lig trailernummeret, så kopier hele rækken
        trailerliste.Range(Cells(t, 1), Cells(t, 13)).Copy 'Kopier kolonne 1 to 13 (A til M)
        reportsheet.Range(Cells(i, 1), Cells(i, 13)).PasteSpecial xlPasteValues 'Indsæt linjen på pladsen der matcher trailernummeret
        End If
Next i

Next t

'Her vælges den færdige liste for at se endt resultat
reportsheet.Select

'Vis besked om at gennemløbet er fuldført
MsgBox ("Søgning gennemført")

Application.ScreenUpdating = True

End Sub

Er der nogen der kan give mig lidt klarsyn i hvorfor den ikke fanger at den skal hente data i de predefinerede ark?

Mvh. Thomas.
Avatar billede RasmusE Praktikant
14. juni 2019 - 12:28 #1
Har du prøvet med "ThisWorkbook.Sheets" i stedet, når du definerer variablerne?
Sådan her:

Set trailerliste = ThisWorkbook.Sheets("Data ud (2)")
Set reportsheet = ThisWorkbook.Sheets("18")
14. juni 2019 - 12:53 #2
Ja den har jeg forsøgt mig med, det giver samme resultat, det er heller ikke fordi den ikke fanger arkene i variablerne, men jeg tænker mere om jeg skriver disse to linjer forkert (Jeg vil gerne undgå at aktivere arkene, derfor jeg forsøger mig med denne løsning)

trailerliste.Range(Cells(t, 1), Cells(t, 13)).Copy
og
reportsheet.Range(Cells(i, 1), Cells(i, 13)).PasteSpecial xlPasteValues

Som sagt, hvis jeg kører makroen trin for trin, og den kommer til fejlen, kan jeg "Debugge" vælge arket i linjen og køre videre til næste linje hvor den fejler igen, "Debug", vælge arket og den kører færdig og looper helt som den skal...

... jeg har SÅ meget at lære endnu!
14. juni 2019 - 13:27 #3
En lille opdatering!

Jeg har nu prøvet med følgende:

trailerliste.Activate
        Range(Cells(t, 1), Cells(t, 13)).Copy

reportsheet.Activate
        Range(Cells(i, 1), Cells(i, 13)).PasteSpecial xlPasteValues

Så virker det hele som det skal, men som sagt ønsker jeg ikke at aktivere nogle ark, men "bare" stå i arket der bliver opdateret, så det må kunne barberes ned til at jeg "kun" skriver mine linjer forkert...

Håber der er en venlig sjæl der kender svaret.
Avatar billede kim1a Ekspert
14. juni 2019 - 13:50 #4
Mangler der evt bare:
sheets(trailerliste).Range....
14. juni 2019 - 13:55 #5
@kim1a

Nej desværre, den har også været forsøgt, giver samme fejl...

Men et rigtig godt bud!
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