25. februar 2015 - 22:48Der er
2 kommentarer og 1 løsning
flytte mange faner på en gang
Et regneark med 48 faner. Nogle grønne, nogle blå. De blå skal gerne flyttes til andet regneark i samme- eller ny projektmappe. Kan det gøres på en gang med noget søg-og-erstat, eller skal jeg prikke hvert enkelt ark ud med ctrl+klik, og flytte en gruppe på 5-6 ark ad gangen?
Hver fane repræsenterer et navn. Kan jeg lave en liste over navnene på fanerne, eller skal det gøres ved håndkraft?
Det er jo to spørgsmål, så jeg gir (selvfølgelig) 60 points.
Hvis du vil kopiere/flytte baseret på hvilken farve arket 'Tab' har kan du finde farve-koden du vil arbejde med ved at åbne VBA Editoren og skrive "?Application.ActiveSheet.Tab.Color" i Immediate vinduet, så får du en kode som f.eks. 255 for rød.
Indsæt flg. makro i din workbook ret den til og kør:
Sub testColor() Dim srcWb As Workbook Dim destWb As Workbook Dim ws As Worksheet
Set srcWb = Application.ActiveWorkbook Set destWb = Workbooks.Add 'Opret ny workbook
For Each ws In srcWb.Worksheets If ws.Tab.Color = 255 Then 'Ret til ønsket farve ws.Copy After:=destWb.Worksheets(destWb.Worksheets.Count) 'Ændre til .Move hvis du vil flytte arket i stedet for kopiering End If Next ws
Tak for venlig assistance, men jeg er slet ikke så befaren i wb at jeg tør gå i gang med det. Jeg markerede i stedet alle de røde faner og flyttede dem. Derefter de grønne o.s.v. Det var slet ikke så bøvlet, som først antaget.
Ved du, om jeg kan lave en liste over navnene på fanerne?
Der er ingen grund til at være bange for at lave lidt i VBA, det er ret lige til :)
Jeg ved ikke om man kan lave en liste over ark i en workbook på ander måder end ved ved VBA, men hvis du har mod på det kan flg. makro bruges. Den opretter et nyt ark som det første ark og løber så de resterende ark igennem og indsætter navnet på arket(fanen) i listen:
Sub createSheetlist()
Dim wb As Workbook Dim ws As Worksheet
Set wb = Application.ActiveWorkbook wb.Worksheets.Add Before:=wb.Worksheets(1) Set ws = wb.Worksheets(1) ws.Name = "List"
Dim i As Integer ws.Cells(1, 1).Value = "Sheet name" For i = 2 To wb.Worksheets.Count ws.Cells(i, 1).Value = wb.Worksheets(i).Name Next
End Sub
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.