Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
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
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)
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.
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
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.
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.
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
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
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.
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.
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.
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.