Avatar billede gladhund Nybegynder
17. oktober 2010 - 17:28 Der er 22 kommentarer og
1 løsning

Løbsk løjkke

Kære eksperter,

Er der en der kan fortælle mig hvorfor denne ikke fungerer? Jeg får følgende fejl:

"Method 'Value' of object 'Range' failed"

Og så står Excel ret længe med timeglas før det...

Public Sub rapportunderliggende()

'Denne sub skriver TOTALEN for hver af de underliggende KP'er ind i Rapporter

Dim Sti(4) As String

Dim antalRæk As Integer, ræk As Integer, rapportrow As Integer
Dim placering As String

Sheets("Opsætning").Activate
Range("B24").Select

antalRæk = ActiveCell.SpecialCells(xlLastCell).Row 'sidste række med indhold

rapportrow = 24

For ræk = 24 To antalRæk
placering = Range("C" & CStr(ræk))

Sti(0) = placering
Sti(1) = Left(Sti(0), InStrRev(Sti(0), "\"))
Sti(2) = Mid(Sti(0), InStrRev(Sti(0), "\") + 1, Len(Sti(0)))
Sti(3) = "[" & Sti(2) & "]" & "Rapporter"
Sheets("Rapporter").Range("c" & rapportrow).Value = "=" & "'" & Sti(1) & Sti(3) & "'" & "!k8"
Sheets("Rapporter").Range("d" & rapportrow).Value = "=" & "'" & Sti(1) & Sti(3) & "'" & "!k9"
Sheets("Rapporter").Range("e" & rapportrow).Value = "=" & "'" & Sti(1) & Sti(3) & "'" & "!k10"
Sheets("Rapporter").Range("f" & rapportrow).Value = "=" & "'" & Sti(1) & Sti(3) & "'" & "!k11"
Sheets("Rapporter").Range("g" & rapportrow).Value = "=" & "'" & Sti(1) & Sti(3) & "'" & "!k12"
Sheets("Rapporter").Range("h" & rapportrow).Value = "=" & "'" & Sti(1) & Sti(3) & "'" & "!k13"
Sheets("Rapporter").Range("i" & rapportrow).Value = "=" & "'" & Sti(1) & Sti(3) & "'" & "!k14"
 
rapportrow = rapportrow + 1

Next ræk

End Sub

Løkken skal gennemgå alle sti+filnavn poster i arket "Opsætning" og skrive en række værdier fra disse workbooks i arket "Rapporter". Både listen med workbook stier i Opsætning og listen med værdier i Rapporter starter i række 24.

Thanx :)
Avatar billede anlu Nybegynder
17. oktober 2010 - 17:59 #1
Hmm... jeg vil mene du skal sætte .Formula i stedet for .Value i:
Sheets("Rapporter").Range("c" & rapportrow).Value = "=" & "'" & Sti(1) & Sti(3) & "'" & "!k8"

osv.

Prøv at se om det bare er det der giver dig fejlen.
Avatar billede gladhund Nybegynder
17. oktober 2010 - 18:22 #2
Jeg prøver, tak, men det har virket før med .value. Jeg havde hardcoded det på en fast range før jeg gik i gang med at lave det om til en løkke der kan håndtere "uendelige" rækker...

Jeg er ikke skrap til løkker, så det ku sagtens være noget med den!
Avatar billede gladhund Nybegynder
17. oktober 2010 - 18:24 #3
Ingen forskel på .value og .formula
Avatar billede anlu Nybegynder
17. oktober 2010 - 18:51 #4
Jeg har lige prøvet at kopiere din kode - umiddelbart kører den ok (med ganske få tilpasninger, der bør være ubetydelige).
Tænker om der kan være et eller andet med de filer du linker til?

Og det undrer mig at du tilsyneladende skriver i de samme celler i hvert gennemløb af løkken - er det meningen?
Avatar billede gladhund Nybegynder
17. oktober 2010 - 19:06 #5
Jeg skal ikke skrive i de samme celler... Det skulle gerne være sådan her:
1. For øverste række (startrække 24) i arket Opsætning læses værdierne i den angivne fil (hvis der er en)
2. I øverste række i arket Rapporter indsættes værdierne (startrække 24)
3. Så læses værdierne i den næste fil i arket Opsætning, hvis der er en
4. Så indsættes værdierne fra den fil i næste række i arket Rapporter
5. Og så videre indtil der ikke er flere stier i arket Opsætning...
Avatar billede anlu Nybegynder
17. oktober 2010 - 19:15 #6
åh ja, fejl 40 herfra, jeg havde ikke fået kopieret linjen

rapportrow = rapportrow + 1

Det er vel lidt dobbeltkonfekt at du både har ræk-variablen og rapportrow, som begge refererer til samme række :-)

Men for at komme det nærmere - kan du se hvor koden stopper. Hvilken kodelinje, og hvad er værdien af ræk/rapportrow?
Avatar billede gladhund Nybegynder
17. oktober 2010 - 19:30 #7
Det er faktisk helt tilfældigt at begge lister starter i række 24 i de to forskellige ark! Jeg kan godt se hvad du mener, og tænkte også at jeg måske ku nøjes med en variable, men så hvis jeg senere rykkede noget ned i et af arkene...

Jep - koden stopper der hvor den skal skrive første række i arket Rapporter. Og den står med timeglas i næsten fem sekunder før den kommer med fejlmeddelelsen. Jeg ved ikke hvad værdien af ræk er, men jeg kan lige prøve at sætte en msgbox ind - be right back :)
Avatar billede gladhund Nybegynder
17. oktober 2010 - 19:33 #8
Weird. Jeg har sat de her to msgboxe ind lige før "Next ræk":

MsgBox (ræk)
MsgBox (rapportrow)

De siger:
24
25
25
26

Og så kører det i ring derfra MANGE gange indtil fejlen kommer. Så noget er helt tosset :)
Avatar billede anlu Nybegynder
17. oktober 2010 - 19:42 #9
Det vil sige at det går godt for de første 2 gennemløb og så starter den forfra?

Er der noget ved den tredje fil, der er anderledes, så det kan trigge at koden eksekveres igen? Hvordan igangsættes din Sub?
Avatar billede gladhund Nybegynder
17. oktober 2010 - 19:47 #10
Der er kun to filer lige nu i arket Opsætning; I rækkerne 24 og 25. Der kan så tilføjes flere eller der kan være slet ingen (0 til uendelig).

Koden startes i worksheet_activate (call rapportunderliggende), i sheet Rapporter

Måske er det fordi jeg ikke får afsluttet løkken ordentlig? Den bør vel heller ikke gå til række 26, når den er tom...
Avatar billede excelent Ekspert
17. oktober 2010 - 19:55 #11
Prøv udskift :
antalRæk = ActiveCell.SpecialCells(xlLastCell).Row 'sidste række med indhold
med
antalRæk = Cells(1000, "B").End(xlUp).Row
Avatar billede anlu Nybegynder
17. oktober 2010 - 19:55 #12
Jo, det er såmænd rigtigt nok at rapportrow når at blive 26 lige inden løkken stopper - ræk derimod når kun at blive 25. Så det ser godt nok ud.

Men prøv at sætte en msgbox ind i Activate-eventen lige inden du kalder rapportunderliggende. Det kunne meget vel her miseren opstår.

Hvis denne msgbox vises inden hvert gennemløb, så er det jo ikke din løkke i sig selv, men derimod, at Activate-eventen trigges gentagne gange.
Avatar billede gladhund Nybegynder
17. oktober 2010 - 20:04 #13
Rigtigt - den viser den msgbox lige før call rapportunderliggende hver gang, så activate køres i ring...
Avatar billede gladhund Nybegynder
17. oktober 2010 - 20:06 #14
Måske fordi jeg aktiverer arket Opsætning med den kode der kører når jeg aktiverer arket Rapporter... Så kører det i ring
Avatar billede anlu Nybegynder
17. oktober 2010 - 20:08 #15
Sker der andet i din activate-event?
Jeg kan ikke umiddelbart se noget i din kode i rapportunderliggende, der aktiverer Rapporter-sheetet.
Avatar billede gladhund Nybegynder
17. oktober 2010 - 20:16 #16
Når man vælger arket Rapporter, så køres Call rapportunderliggende. Og når rapportunderliggende() kører, så køres en løkke i Opsætning. Og når løkken i opsætning køres, så køres en løkke i Rapporter - så ikke så skarpt bygget op af mig :).

Det er godt du så det! Nu har jeg fjernet call rapportunderliggende fra activate eventen i Rapporter, og fejlen er forsvundet. Jeg har lagt kaldet ind i stedet når der tilføjes en ny fil i Opsætning, så rapporter arket bliver opdateret der - hvilket er godt nok. Så det ser ud til at være løst nu - juhu :)
Avatar billede anlu Nybegynder
17. oktober 2010 - 20:16 #17
Jeg synes jo ikke at aktivering af opsætning burde trigge activate i Rapporter.
Jeg sidder lige og overvejer om Range("B24"). Er den tænkt som refererende til Rapporter-arket eller opsætning-arket?
Avatar billede anlu Nybegynder
17. oktober 2010 - 20:17 #18
Nå, der krydsede vi lige kommentar - godt du fik det løst :o)
Avatar billede gladhund Nybegynder
17. oktober 2010 - 20:26 #19
Range("B24"). er til Opsætning arket, hvor alle stierne er.

Så er jeg i tvivl - for det virker nu, efter jeg har fjernet koden fra worksheet_activate eventen...

Tror du ikke vi skal sige, at den er løst her? :). Og så skal jeg bede om et svar...
Avatar billede anlu Nybegynder
17. oktober 2010 - 20:34 #20
helt fint :)
Avatar billede gladhund Nybegynder
17. oktober 2010 - 20:50 #21
Og tak for hjælpen :)! Den kunne sikkert godt ha' givet mig grå hår i hovedet. Jeg kiggede absolut ikke det rigtige sted.
Avatar billede anlu Nybegynder
17. oktober 2010 - 21:17 #22
Det var så lidt. Og ja, det er sådan en ting der er rar at have sparring til, når man selv har stiret sig blind på problemet :o)
Avatar billede gladhund Nybegynder
17. oktober 2010 - 21:24 #23
Nemlig!
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