17. december 2003 - 17:43Der er
7 kommentarer og 1 løsning
Combo box - Indsæt data!
Hej, Jeg har et ganske omfattende regneark der indholder omkring 70 ark og ønsker en måde at holde styr på disse. Jeg ønsker derfor en combo box der kan give mig en liste over alle disse ark således jeg hurtigt kan springe ned til det rigtige. Jeg er dog ikke klar over hvordan jeg kæder de enkelte ark ind i denne combo box. Nogle der kan hjælpe???
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Her er en anden version. Den fylder ikke en komboboks men opretter et nyt ark med hyperlinks til alle de øvrige ark i mappen.
Sub ListArkIMappen() 'Jan Kronsell november 2001
'Koden opretter et ark med en liste over alle 'de ark, der findes i mappen 'De pågældende ark angives som hyperlink
Dim s As Worksheet Dim n As Integer
'Her oprettes arket: "Arkliste" n = 2 With Worksheets.Add .Name = "Arkliste" .Move Before:=Worksheets(1) End With
'Så læses mappen igennem for arknavne 'Og de indsættes i A-kolonnen i "Arkliste For Each s In ActiveWorkbook.Worksheets If s.Name <> "Arkliste" Then Sheets("Arkliste").Hyperlinks.Add Anchor:=Range("a" & n), Address:="", SubAddress:= _ s.Name & "!a1", TextToDisplay:=s.Name ' Sheets("Arkliste").Range("a" & n) = s.Name n = n + 1 End If Next
'Så sletter vi lige en overflødig række '+ navnet på selve det ark, som listen er i Rows("1:1").Select Selection.Delete Shift:=xlUp Range("b1").Select
jkrons> Har lige afprøvet din makro - Virker rigtig godt. Men hvis man skal have nogen glæde af den, vil det være dejligt hvis der bliver oprettet et link fra alle ark til hovedsiden også. Det kan selvfølgelig være lidt svært at sige om celle A1 altid er fri til at lave et link på de forskellige ark, men det kan vi jo bare aftale den er :-) Alternativer kan også gå!!
Sub ListArkIMappen() 'Jan Kronsell november 2001 'Rettet December 2003
'Koden opretter et ark med en liste over alle 'de ark, der findes i mappen 'De pågældende ark angives som hyperlink 'Desuden oprettes i A1 i hvert ark et hyperlink tilbage til 'Indholdsfortegnelsen
Dim s As Worksheet Dim n As Integer
'Her oprettes arket: "Arkliste" n = 2 With Worksheets.Add .Name = "Arkliste" .Move Before:=Worksheets(1) End With
'Så læses mappen igennem for arknavne 'Og de indsættes i A-kolonnen i "Arkliste For Each s In ActiveWorkbook.Worksheets If s.Name <> "Arkliste" Then Sheets("Arkliste").Hyperlinks.Add Anchor:=Range("a" & n), Address:="", SubAddress:= _ s.Name & "!a1", TextToDisplay:=s.Name ' Sheets("Arkliste").Range("a" & n) = s.Name n = n + 1 End If Next
'Så sletter vi lige en overflødig række '+ navnet på selve det ark, som listen er i Rows("1:1").Select Selection.Delete Shift:=xlUp Range("b1").Select
'Så opdaterer vi de enkelte ark, så der laves hyperlink tilbage 'til indholdsfortegnelsen
For Each s In ActiveWorkbook.Worksheets If s.Name <> "Arkliste" Then s.Activate ActiveSheet.Range("a1").Activate s.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:= _ "Arkliste!A1", TextToDisplay:="Arkliste" End If Next s Sheets("Arkliste").Activate
De to ovensående løsninger forudsætter begge, at "Arliste" - altså indholdsfortegnelsen IKKE eksisterer i forvejen, når makroen køres. Her er en modificeret variant, der tillader at arket med indholdsfortegnelsen allerede eksisterer.
Den er baseret på, at Chip Peason's SheetExists funktion placeres i samme modul som koden til opbygning af indholdsfortegenlsen:
Function SheetExists(SName As String, _ Optional ByVal WB As Workbook) As Boolean 'Chip Pearson On Error Resume Next If WB Is Nothing Then Set WB = ThisWorkbook SheetExists = CBool(Len(WB.Sheets(SName).Name)) End Function
Derefter kommer så min kode:
Sub ListArkIMappen() 'Jan Kronsell november 2001 'Rettet December 2003. Nedenstående rettelser indført 'Tester om ark allerede findes 'Indsætter hyperlink tilbage til indholdsfortegnelse
'Koden opretter et ark med en liste over alle 'de ark, der findes i mappen 'De pågældende ark angives som hyperlink 'Desuden oprettes i A1 i hvert ark et hyperlink tilbage til 'Indholdsfortegnelsen
Dim s As Worksheet Dim n As Integer
'Vi kontrollerer om der allerede findes en indholdsfortegnelse If SheetExists("Arkliste") = True Then 'I så fald renses det pågældende ark for indhold Sheets("Arkliste").UsedRange.Clear 'Ellers oprettes et nyt ark til indholdsfortegnelsen Else With Worksheets.Add .Name = "Arkliste" .Move Before:=Worksheets(1) End With End If
n = 2
'Så læses mappen igennem for arknavne 'Og de indsættes i A-kolonnen i "Arkliste For Each s In ActiveWorkbook.Worksheets If s.Name <> "Arkliste" Then Sheets("Arkliste").Hyperlinks.Add Anchor:=Range("a" & n), Address:="", SubAddress:= _ s.Name & "!a1", TextToDisplay:=s.Name n = n + 1 End If Next
'Så sletter vi lige en overflødig række '+ navnet på selve det ark, som listen er i Rows("1:1").Select Selection.Delete Shift:=xlUp Range("b1").Select
'Så opdaterer vi de enkelte ark, så der laves hyperlink tilbage 'til indholdsfortegnelsen
For Each s In ActiveWorkbook.Worksheets If s.Name <> "Arkliste" Then s.Activate ActiveSheet.Range("a1").Activate s.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:= _ "Arkliste!A1", TextToDisplay:="Arkliste" End If Next s Sheets("Arkliste").Activate
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.