Avatar billede cljpfa Nybegynder
20. december 2008 - 16:17 Der er 9 kommentarer og
1 løsning

Variable i "range"

Hej,

Jeg vil gerne lave en makro der indsætter en lopslagsformel i et bestemt antal rækker og kolonne. Kolonne nr. i lopslagsformlen skal stige med én for hver række, der indsættes ;o) Hvad går galt ved "***" i min lille makro

Dim iRowBegin As Integer
Dim iRowEnd As Integer
Dim sColBegin As String
Dim sColEnd As String
Dim irow As Integer


iRowBegin = InputBox("Indtast startrækkenummer", "Startrække")
iRowEnd = InputBox("Indtast slutrækkenummer", "Slutrække")
sColBegin = InputBox("Indtast startkolonnenummer", "Startkolonne")

irow = iRowBegin

Do Until irow > iRowEnd

*** Range("sColBegin & irow & ").Select
ActiveCell.FormulaR1C1 = "=VLOOKUP(R[-1]C,Ark2!R[-1]C:R[29]C[1],irow,0)"
irow = irow + 1
Loop

end sub
Avatar billede excelent Ekspert
20. december 2008 - 16:33 #1
anvend cells i stedet for range

cells(irow,sColBegin).select
Avatar billede kabbak Professor
20. december 2008 - 19:29 #2
Du skal svare med tal i alle 3 inputbokse, men du skal vist også styre hvor den skal slå op, for det styrer den ud fra hvilke kolonner du vælger, så de skal nok være faste.
Se eksempel i formulalocal, dansk version

Public Sub test()
Dim iRowBegin As Integer
Dim iRowEnd As Integer
Dim sColBegin As Integer
Dim sColEnd As Integer
Dim irow As Integer


iRowBegin = InputBox("Indtast startrækkenummer", "Startrække")
iRowEnd = InputBox("Indtast slutrækkenummer", "Slutrække")
sColBegin = InputBox("Indtast startkolonnenummer", "Startkolonne")

irow = iRowBegin

Do Until irow > iRowEnd


'Cells(irow, sColBegin).FormulaR1C1 = "=VLOOKUP(R[-1]C,Ark2!R[-1]C:R[29]C[1]," & irow & ",0)"
Cells(irow, sColBegin).FormulaLocal = "=LOPSLAG(C" & irow & ";Ark2!$C$1:$D$31;" & irow & ";0)"
irow = irow + 1
Loop

End Sub
Avatar billede kabbak Professor
20. december 2008 - 19:32 #3
ret lige

Cells(irow, sColBegin).FormulaLocal = "=LOPSLAG(C" & irow & ";Ark2!$C$1:$D$31;" & irow & ";0)"
til
Cells(irow, sColBegin).FormulaLocal = "=LOPSLAG(C" & irow & ";Ark2!$C$1:$D$31;5;0)"
Avatar billede cljpfa Nybegynder
22. december 2008 - 11:43 #4
Ideen med denne makro er, at lave en løkke som indsætter et lopslag i flere celler, og hvor kolonnenr. i lopslaget vokser med en pr. loop. Hvis man eks. skal trække et lopslag ned over 50 rækker, skal man jo efterfølgende ind og rette 49 gange i kolonne nr.'et i lopslagsformlerne. Så, irow skal vel blive stående. Hvorfor kan kolonnevariablen ikke være "String"?
Avatar billede excelent Ekspert
22. december 2008 - 11:53 #5
Det  må man da kunne lave med en formel
prøv indsæt de første 2 LOPSLAG's formler her
Avatar billede cljpfa Nybegynder
22. december 2008 - 12:16 #6
Kan vel også illustreres med Vopslag ;O)

=VOPSLAG(A1;Ark2!A1:H50;1;0), hvis jeg så gerne vil anvende denne formel og "trække" formlen ned over de næste 49 rækker, så skulle formlen i række 2 så gerne blive til VOPSLAG(A1;Ark2!A1:H50;2;0) osv... ;O) Men her skal man jo så selv rette kolonne nr. fra 1 til 2 og til 3 osv...
Avatar billede excelent Ekspert
22. december 2008 - 12:20 #7
=VOPSLAG(A1;Ark2!A1:H50;RÆKKE(1:1);0)
Avatar billede cljpfa Nybegynder
22. december 2008 - 15:01 #8
Hvis du mener, at jeg kan indsætte denne formel og trække den ned, så virker det ikke ;o( ????
Avatar billede cljpfa Nybegynder
22. december 2008 - 15:03 #9
Og NU virker det, havde tastet forkert - TAK for hjælpen ;O)
Avatar billede excelent Ekspert
22. december 2008 - 15:04 #10
det har nok været en fejl 40 :-)
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
Vi har et stort udvalg af Excel kurser. Find lige det kursus der passer dig lige her.

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