21. oktober 2003 - 11:46Der er
15 kommentarer og 1 løsning
Dynamisk definere hvilket ark en reference skal være til
Jeg har nogle evaluerings ark som jeg gerne vil lave noget statestik på. Derfor vil jeg lave et nyt ark som trækker data fra en masse ark - og en masse steder i hvert ark. Jeg vil gerne vide om man kan lave et felt hvori man skriver filnavnet på en fil og så er der andre felter der bruger dette til at finde ud af hvilken fil de skal trække data. [Evalueringsark.xls]Spørgsmålsark!$E$5 - men hvor jeg ikke skal ind i alle formelerne og skrive evalueringsark.xls
Jeg vil gerne have det sådan at jeg har en mappe der hedder mappe1 som indeholder en evaluering som jeg så kæder til. Jeg har så også en mappe2 som jeg kæder til. Jeg har ne mappe3 osv. Derfor er jeg interreseret i ikke at skulle skrive 15-20 formler om pr mappe.
Nogen der ved hvorfor denne kun virker hvis kaldt fra sub ? Ellers var den jo løsningen : Function GetValue(path, file, sheet, ref) ' Retrieves a value from a closed workbook Dim arg As String ' Make sure the file exists If Right(path, 1) <> "\" Then path = path & "\" If Dir(path & file) = "" Then GetValue = "File Not Found" Exit Function End If ' Create the argument arg = "'" & path & "[" & file & "]" & sheet & "'!" & _ Range(ref).Range("A1").Address(, , xlR1C1) ' Execute an XLM macro GetValue = Application.ExecuteExcel4Macro(arg) End Function
Du kan jo lave alt med VBA. Skriv et filnavn i den celle du ønsker, og kør derefter en macro (Macroen kan også sættes til at køre automatisk når du retter i cellen med en _OnChange)
I macroen læses filnavnet ind i en variabel, og alle de formler du ønsker at rette bliver rettet med det nye filnavn....
Hvad er problemet i at lave det som en macro (eller i en Sub, som i kalder det)?
aheiss ->VBA er meget streng med hvad der tillades i en Function, der kaldes fra regnearket, ExecuteExcel4Macro er åbenbart heller ikke tilladt (man kan jo indirekte ændre cellen man kalder fra) Jeg har lavet en løsning på disse problemer, men det er lidt uelegant - jeg sender en Postmessage, der checkes i sheetchange, hvorefter en makro kaldes. På den måde kan man næsten alt (også f.eks. ændre formatering i et funktionskald)
Jeg fatter ikke problemet. Skriv koden i en macro! Kald macroen når den skal køres - evt med en trykknap, en tastekombination (Ctrl + E f.eks.) eller få kørt macroen automatisk når indholdet i en bestemt celle ændres...
Ikke noget pjat med at skrive det i en funktion der kan kaldes fra regnearket - lav en god og solid macro, og kald den når det behøves, evt. automatisk...
Jeg er ikke så stærk i makroer, men jeg kan ikke gennemskue at det kan løse mit problem. Det ser ud til at Excel ikke har den ønskede funktinalitet i hvert fald, og det må jeg så bare lære at leve med.
Nej, men jeg tænker også i tid. Jeg gider ikke bruge timer på at finde ud af hvordan jeg bruger makroer, for derefter at bruge noget tid på at flytte data frem og tilbage.
Men husk på, at macroer er vores venner. Med macroer kan du håndterer stort set ALT, du kan skrive/læse til/fra filer/databaser, automatiserer alverdens ting osv...
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.