Avatar billede znogen Nybegynder
20. februar 2008 - 14:49 Der er 14 kommentarer og
1 løsning

Vælge ark efter celleværdi

Jeg åbner en projektmappe "X" som har en tekst i celle "a3"
Denne tekst refererer til et beskemt ark i en anden projektmappe "Y".

Jeg skal kopiere tal fra "X" til "Y" i det bestemte ark.

Jeg kan mappe tekstværdierne fra celle "a3" med ark-navne i "Y".
f.eks. "a3"= "produkt auto"  er lig ark:"auto"

eller jeg kan indtaste en celle i "Y" til at være lig teksten fra "X".


Ønske:
Jeg vil have en makro der søger efter det rigtige ark udfra en celleværdi, sådan at jeg bare kan starte en makro og den søger for at kopiere tal ind i det rigtige ark.

ps. Skal jeg selv åbne projektmapperne inden start af makro?
pps. Kan man få dette til at virke når destinations projektmappen ændrer navn (ændrer navn systematisk)
Avatar billede excelent Ekspert
25. februar 2008 - 19:58 #1
Sub Kopier2()

x = Sheets("Ark1").Range("A3")
Workbooks.Open Filename:="y.xls"
Workbooks("x.xls").Sheets("Ark1").Range("A10:B21").Copy Workbooks("y.xls").Sheets(x).Range("C12")
Workbooks("y.xls").Close savechanges:=True

End Sub

mht. ændring af destinations navn, så kommer det an på aktuel situation
Avatar billede znogen Nybegynder
25. februar 2008 - 21:54 #2
Tak for dit bud.

umiddelbart har jeg problemer med at få det til at virke.
"subscript out of range"

jeg har oprettet x.xls og y.xls
(nu er mit excel på eng, så jeg har rename "ark")

Hvad sker der i 3.linje? (den længste linje)
Avatar billede excelent Ekspert
25. februar 2008 - 21:59 #3
linien kopierer A10:B21 i Ark1 fra x filen til C12 i y filen i ark som beskrevet i celle A3 Ark1 i x filen
Avatar billede excelent Ekspert
25. februar 2008 - 22:05 #4
Område som kopieres er blot et eks da du ikke har defineret hvad der skal kopieres hos dig
Den fejl du får tyder på at der ikke er indtastet et gyldig arknavn i celle Ark1 A3
Avatar billede znogen Nybegynder
25. februar 2008 - 22:15 #5
Du har helt ret. jeg havde ikke angivet arkets navn i y = "a3".
Tak for den bid hjælp.

Det rigtig spændende kommer her:
Hvordan laver jeg denne kobling mere generel...

Når jeg åbner arket X, vil a3 have forskellige værdier.
Som sagt refererer de til forskellige ark i Y.

Hvordan binder jeg a3 sammen med de navne som Y's ark allerede har?
dvs. A3="produkt auto"  -> ark: "auto"
eller A3="produkt cykel" -> ark: "løs ting"
(og det fortsætter....)
Avatar billede znogen Nybegynder
25. februar 2008 - 22:30 #6
Altså noget hvor A3 værdien blåver slået op i en tabel, og erstattet af Y's arknavn som passer med denne a3.
Avatar billede znogen Nybegynder
25. februar 2008 - 22:40 #7
Måske kan man lave en lookup()  i et skjult ark i Y, hvor de forskellige tekster er "linket"
Avatar billede excelent Ekspert
25. februar 2008 - 22:42 #8
vi kan da prøve, hvor er opslagsværdierne, og hvor er arknavnene ?
Avatar billede znogen Nybegynder
27. februar 2008 - 20:28 #9
Lige der hvor der er bedst at have dem.
De kan være i makroen eller i et ark.
Hvad foreslår du?
Det eneste krav jeg har, er at de er opstillet på en god måde, dvs. tabel eller lign.
Jeg vil gerne undgå at det bliver en "hard code" igennem makroen.
Avatar billede znogen Nybegynder
28. februar 2008 - 10:33 #10
nu har jeg prøvet koden med de "rigtige" ark (og ikke x og y)
Jeg bruger lookup funktionen i det data ark jeg har oprettet med en tabel der angiver sammenhænge mellem a3 og arknavn.

F1 er resultatet af lookup. dvs y-arkets rigtige navn.

Kode:
'copy
    Windows("Regnskab.xls").Activate
    Range("a3").Select
    Application.CutCopyMode = False
    Selection.Copy
'paste
    Windows("samlet hensættelsesskema.xls").Activate
    Sheets("MAKRO").Select
    Range("e1").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False

x = Range("f1").Select
Workbooks("regnskab.xls").Sheets("statistik (2)").Range("c10:c46").Copy Workbooks("samlet hensættelsesskema.xls").Sheets(x).Range("g11")


Den fejler med sidste linie.
den fejler ikke hvis jeg erstatter x med det rigtige navn på arket.
den fejler stadig hvis jeg erstatter f1 med et navn (i stedet for den lookup formel f1 indeholder)
Avatar billede znogen Nybegynder
28. februar 2008 - 11:10 #11
Nu fejler den ikke længere.  selvom intet er ændret.

dog syntes det ikke muligt at lave flere linier efter hinanden?
Workbooks("regnskab.xls").Sheets("statistik (2)").Range("c10:c46").Copy Workbooks("Y.xls").Sheets(x).Range("g11")
Workbooks("regnskab.xls").Sheets("statistik (2)").Range("e10:050").Copy Workbooks("Y.xls").Sheets(x).Range("o11")

excelent du har svaret på det originale spørgsmål -så svar gerne.
Avatar billede excelent Ekspert
28. februar 2008 - 11:30 #12
denne linie
x = Range("f1").Select
skal ændres til
x = Range("f1")

denne ser forkert ud, er det nul eller o du anvender i dit range - skal nok ændres til O (som i Ole)
.Range("e10:050").Copy Workbooks("Y.xls

umiddelbart ser det ud til du kopierer oven i de første data du kopierer !!
Avatar billede znogen Nybegynder
28. februar 2008 - 20:04 #13
hvad gør det at der står select bagved?
Ja, det er O som i Olivia.
der bliver ikke overskrevet noget nogen steder.

angående indsætningen af værdierne:
http://www.eksperten.dk/spm/821519
Avatar billede excelent Ekspert
28. februar 2008 - 20:18 #14
denne selecter celle F1
Range("f1").Select
men formålet med linien er at tildele variablen x celle F1's værdi
man kan evt. skrive
Range("f1").Text
eller
Range("f1").Value
Avatar billede znogen Nybegynder
03. marts 2008 - 20:29 #15
Ok, hvis jeg skriver Value, så tager den kun værdien og ikke f.eks. formateringen med?
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