Avatar billede panebb Novice
26. august 2007 - 13:46 Der er 16 kommentarer og
1 løsning

hente blok af celler via liste

Jeg har oprrette en række blokke/grupper af celler i et ark, og ønsker at hente en af disse grupper ind i et andet ark via valg på en liste. Hvordan?

Hvis jeg vælger første oplysning i listen (eks: pro1) skal cellerne (pro!A22:W31) hentes. Hvis pro2 vælges, skal pro!A32:W41 hentes osv.
Avatar billede excelent Ekspert
26. august 2007 - 14:26 #1
Her forudsættes du har dropdown i B13 og der skal kopieres til B15
ret efter behov (indsæt koden i destinationarkets kodemodul)

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("B13")) Is Nothing Then Exit Sub
If Target = "pro1" Then Sheets("pro").Range("A22:W31").Copy Range("a15")
If Target = "pro2" Then Sheets("pro").Range("A32:W41").Copy Range("a15")
End Sub
Avatar billede panebb Novice
26. august 2007 - 15:30 #2
Tak for kommentaren, det rejser bare et nyt spørgsmål:
Hvor skal jeg skrive koden? Du skriver i destinationsarket "kodemodul", hvor er det?
Avatar billede excelent Ekspert
26. august 2007 - 15:37 #3
Jeg går ud fra du har din datavalidation list i et andet ark end pro
Så højreklik på arkfanen hvor listen er og vælg "vis programkode"
indsæt koden i det tomme vindue

ret B13 til den celle hvor du har liste
ret a15 til den celle hvor du vil kopiere til (øverstevenstre hjørne)
Avatar billede excelent Ekspert
26. august 2007 - 19:16 #4
hvordan går det ?
Avatar billede panebb Novice
26. august 2007 - 22:46 #5
Det går fint, dit svar virker, så jeg skal bare have tildelt dig de lovede point. Tak.
Jeg prøver lige nu at få koden til at virke flere gange i samme ark. Det kan være at du har løsningen der også. Jeg skal udføre samme procedure et variabelt antal gange i samme ark, nogle gange med samme blok, men mest med flere forskellige blokke (valgt fra samme liste). Jeg har derfor indsat en rulleliste nederst i den blok, som bliver indsat. Det virker også, men der bliver ikke kopieret noget. Skal der en adskillelse ind i dine kodelinier før en evt. dublering. Jeg er ny i programering af Excel (tror at jeg har nogenlunde styr på formlerne). Vil gerne lære noget mere programering, skal bare have fundet hvor.
Avatar billede excelent Ekspert
27. august 2007 - 10:30 #6
Hvis det er få, foruddefinerede områder, kan de jo blot laves som i de 2 andre eks.
ellers skal der lidt programmering til
kom med 2-3 eks på områder der skal kopieres, og hvor de skal kopieres til

ser på det efter arb.tid.
Avatar billede panebb Novice
27. august 2007 - 22:49 #7
Jeg er lige kommet hjem fra arbejde. Krudtet er brændt af for i dag sender noget i morgen.
Avatar billede panebb Novice
28. august 2007 - 15:07 #8
Til arket "PROVALG" skal jeg kopiere et variabelt antal blokke ind fra arket "pro". Der er en start celle i "PROVALG" (W19) i denne celle er en rulleliste. Jeg har indsat den ovenstående kode i kodemodulet i "PROVALG", det virker fint.

I arket "pro" er en række blokke (ca 80 stk) alle fra kolonne A->W og 12 rækker høj. Nederste højre celle i hver blok indeholder en rulleliste, der efter planen skal give mulighed for at vælge yderligere en blok, som hentes i arket "pro". De blokke som vælges kan være den samme flere gange eller forskellige.
Avatar billede excelent Ekspert
28. august 2007 - 15:58 #9
hvad bestemmer hvilke blokke der skal med ?
hvor skal de hen i arket PROVALG ?
Avatar billede panebb Novice
28. august 2007 - 16:10 #10
Valget i rullelisten (det er den samme liste, som går igen i alle blokke)afgør hvilke blokke der skal med. Der er ud af de samme ca 80 mulige blokke, at der vælges en eller flere blokke - samme blok kan vælges flere gange.
Når blokkene er valgt, skal de "bare" placeres under hinanden og derefter skrives ud.
Avatar billede excelent Ekspert
28. august 2007 - 19:10 #11
Det er stadig uklart hvad der står i disse dropdownceller samt
hvilke områder de dækker, så her et eks. på en makro baseret på
hvad jeg ved.

Koden finder alle dropdownceller som ikke er tomme og kopierer
en blok på 12 rækker og 23 kolonner med udgangspunkt i denne celle
Blokken kopieres til første tomme række+1 i kol. A i arket PROVALG
Hele området i PROVALG skal formentlig renses ved hver kørsel
men da jeg ikke ved hvad du har der må kode til dette komme senere

Sub Flyt()
Dim rng(100)
ActiveCell.SpecialCells(xlCellTypeAllValidation).Select
For Each d In Selection
If d <> "" Then t = t + 1: rng(t) = d.Address
Next

For t1 = t To 1 Step -1
rk = Sheets("PROVALG").Cells(65500, 1).End(xlUp).Row + 1
Range(rng(t1), Range(rng(t1)).Offset(-11, -22)).Copy Sheets("PROVALG").Cells(rk, 1)
Next
End Sub
Avatar billede panebb Novice
28. august 2007 - 19:41 #12
I rullelisten står blot navne, hvor hvert navn referer til en blok af celler. Navnet pro1 angiver at det er blok 1 jeg vil hente. pro2 skal hente blok 2 osv. Man skal aktivt/manuelt vælge om der skal kopieres en blok mere, hver gang. Den første kode du lavede virkede fint, for at få den næste blok skal der vel laves samme kode en gang mere, næste kode skal så bare refere til en ny celle indeholdende "target", eller ken der kun være et "target" i et ark. Blokkene indeholder både tekst og formler, der kun skal virke indenfor egen blok. Jeg indsatte derfor en celle med den samme rulleliste, som først anvendt, at kunne gentage processen. Det kan godt være at koden bliver lang, hvis der skal tilføjes linier for hver gang jeg vil have mulighed for at vælge en blok mere.

EKS: den øverste del virker godt nok, men når jeg tilføjer next og de næste lilnier
virker det ikke mere.

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("O19")) Is Nothing Then Exit Sub
If Target = "profil1" Then Sheets("pro").Range("A22:W34").Copy Range("a20")
If Target = "profil2" Then Sheets("pro").Range("A35:W47").Copy Range("a20")
If Target = "profil3" Then Sheets("pro").Range("A48:W60").Copy Range("a20")
Next

If Intersect(Target, Range("w32")) Is Nothing Then Exit Sub
If Target = "profil1" Then Sheets("pro").Range("A22:W34").Copy Range("a35")
If Target = "profil2" Then Sheets("pro").Range("A35:W47").Copy Range("a35")
If Target = "profil3" Then Sheets("pro").Range("A48:W60").Copy Range("a35")
End Sub
Avatar billede excelent Ekspert
28. august 2007 - 20:11 #13
nej men så kan vi gøre sådan :

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("O19")) Is Nothing Then Exit Sub
If Target = "profil1" Then Sheets("pro").Range("A22:W34").Copy Range("a20")
If Target = "profil2" Then Sheets("pro").Range("A35:W47").Copy Range("a20")
If Target = "profil3" Then Sheets("pro").Range("A48:W60").Copy Range("a20")

If Range("W32") = "profil1" Then Sheets("pro").Range("A22:W34").Copy Range("a35")
If Range("W32") = "profil2" Then Sheets("pro").Range("A35:W47").Copy Range("a35")
If Range("W32") = "profil3" Then Sheets("pro").Range("A48:W60").Copy Range("a35")
End Sub

men som jeg har forstået det, så er der jo 80 blokke
at vælge imellem og disse skal hver have en linie
hvis det er ret forstået, så sig lige til, så skal jeg se om
det kan gøres anderledes.
Avatar billede panebb Novice
28. august 2007 - 23:31 #14
Jeg troede det du skriver var måden at gøre det på, men jeg kan ikke få det til at virke. Den første blok, som vælges i "O19" bliver korrekt kopieret, også hvis jeg vælger en ny. Men den næste blok som vælges i "w32" kommer ikke.

Og du har forstået det ret, der ca 80 forskellige blokke at vælge i mellem. Der bliver typisk valgt mellem 10 og 20 blokke pr gang. Så 20x80 giver en frygtelig masse linier. I arket "PROVALG" er der nogle rækker foroven med diverse informationer. Derefter det første valg i "O19" - resten er tomt. Blokkene skal kopieres ind (og placeres under hinanden), enkelte celler i blokken skal redigeres (manuelt), og derefter træffes beslutning om der skal vælges igen, og i givet fald hvilken blok.
Avatar billede panebb Novice
28. august 2007 - 23:49 #15
Der sker noget andet spændende med den sidste kode du lavede. I listen kan pt vælges profil1 til profil20. Hvis jeg vælger profil1 til profil3 i "O19" kommer det korrekt i celle "A20:W32". Og jeg kan skifte mellem de tre profiler, som igen giver korrekt kopiering af celler. I "W32" vil jeg igen vælge profil1 til profil3, men der sker intet. Lader jeg valget i celle "W32" stå og vælger om i celle "O19" kommer det i celle "W32" valgte frem korrekt i celle "A35:W47" - uanset hvad jeg vælger i celle "O19" også hvis jeg vælger "profil15". Vil det hjælpe, hvis jeg mailer arket til dig. Der kan godt aftales en pris udover de point du har fået.
Avatar billede excelent Ekspert
29. august 2007 - 15:16 #16
ok send til
pm@madsen.tdcadsl.dk
Avatar billede panebb Novice
29. august 2007 - 16:46 #17
Det er sendt til dig
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