Avatar billede kim1a Ekspert
03. maj 2012 - 16:09 Der er 4 kommentarer og
1 løsning

VBA: referere til en celle dynamisk

Følgende er udpluk fra min VBA løsning:
Dim Lagerdage As Integer
Lagerdage = Application.WorksheetFunction.Match("Lagerdage", Range("A1:EE1"), 0)

Dette fortæller mig hvilken kolonne (nr) der står Lagerdage i A1:EE1

Nu har jeg så brug for at Excel/VBA indsætter en funktion der siger =if([kolonnen der står lagerdage i]3>90;"gør noget";"fint")

Hvordan referer jeg til dette i VBA?

Jeg roder med:
ActiveCell.FormulaR1C1 = "=IF - men kan ikke få RLagerdageC3 til at give mening.

Jeg forsøger hvergang selv at Google først, og dernæst VBAs hjælp (som jeg iøvrigt finder utrolig dårlig) - men det er jo tit små ting jeg mangler for at forstå "sproget".
Avatar billede store-morten Ekspert
03. maj 2012 - 18:30 #1
Måske
Sub test()
Dim KolTal As Integer
KolTal = Application.WorksheetFunction.Match("Lagerdage", Range("A1:EE1"), 0)

KolBog = Mid(Range("A1").Offset(0, (KolTal) - 1).Address, 2, _
InStr(2, Range("A1").Offset(0, (KolTal) - 1).Address, "$") - 2)

If Range(KolBog & "3").Value > 90 Then
ActiveCell.Value = "Større end 90"
Else
ActiveCell.Value = "Mindre end 90"
End If

End Sub
Avatar billede kim1a Ekspert
03. maj 2012 - 18:42 #2
Hvis vi antager at Lagerdage er kolonne BD

Det er vigtigt at den indsætter en formel i Excel der siger:
=if(BD3>90;"Falsk";"sandt") formlen hedder naturligvis noget længere og andet, men for eksemplets skyld.

Min begrænsede kendskab til VBA gør at jeg gætter på dette ikke ikke - men tværtimod indsætter resultatet - jeg forstår at det i sidste ende giver det samme, men jeg har flere formler som i så fald ville kræve mere af mig, end hvis jeg lærer at få den indsætte relative referencer i en formel.
Avatar billede store-morten Ekspert
03. maj 2012 - 19:00 #3
Jeg kunne ikke få det til at du ;-(

Men nu ;-) Prøv:
Sub test()
Dim KolTal As Integer
KolTal = Application.WorksheetFunction.Match("Lagerdage", Range("A1:EE1"), 0)

KolBog = Mid(Range("A1").Offset(0, (KolTal) - 1).Address, 2, _
InStr(2, Range("A1").Offset(0, (KolTal) - 1).Address, "$") - 2)

ActiveCell.Formula = "=IF(" & KolBog & "3>90,""Større end 90"",""Mindre end 90"")"

End Sub
Avatar billede kim1a Ekspert
07. maj 2012 - 10:22 #4
Super løsning - tak for hjælpen - husk at smide et svar.
Avatar billede store-morten Ekspert
07. maj 2012 - 17:19 #5
Velbekomme
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