22. marts 2010 - 00:29Der er
8 kommentarer og 1 løsning
Kopi af faneblad med Makro
Jeg bruger nedenstående makro til at oprette ny fane og navngive den efter værdien i ("Prosjekter").Range("B11:B500")dette virker fint. men vil gerne have lidt mere i den makro :)
Den nye fane, kan det være en kopi af "Master" men stadig navngivet efter værdien i ("Prosjekter").Range("B11:B500")??? Kan den samtidig lave cellen hvor den får værdien fra i ("Prosjekter").Range("B11:B500") om til et hyperlink til det nyoprettet faneblad??
Håber en har løsningen..
Sub Nyfaneautomatisk() ' ' Nyfaneautomatisk Makro '
' Sub MakeSheets() Dim rg As Range Dim sh As Worksheet Dim temp, bfound As Boolean Application.ScreenUpdating = False Set rg = Sheets("Prosjekter").Range("B11:B500") 'indsæt For Each c In rg If Len(c) > 0 Then If Not SheetExist(c.Text) Then Set sh = Worksheets.Add(After:=Sheets(Worksheets.Count)) sh.Name = c.Value End If End If Next 'slet temp = rg 'spring de første 68 ark over For x = 69 To ActiveWorkbook.Worksheets.Count bfound = False For y = 1 To UBound(temp, 1) If temp(y, 1) <> "" Then If Worksheets(x).Name = CStr(temp(y, 1)) Then bfound = True Exit For End If End If Next
If bfound = False Then Application.DisplayAlerts = False Worksheets(x).Delete Application.DisplayAlerts = True End If Next Sheets("Prosjekter").Select Application.ScreenUpdating = True End Sub
Function SheetExist(shname) As Boolean Dim x As Object On Error Resume Next Set x = ActiveWorkbook.Sheets(shname) If Err = 0 Then SheetExist = True Else SheetExist = False End Function
Den link-kode jeg tænkte på følger nederst. Det er 2 makroer der skal sættes ind i koden for arket 'Prosjekter'. De virker på den måde, at når du udfører et dobbeltklik testes for om det er i området B11:B500 og om cellen er tom. Hvis det er i området B11:B500 og cellen ikke er tom kaldes den anden makro. Ellers afbrydes makroen. Den anden makro tester om der findes et ark af samme navn som indholdet i den celle der blev dobbeltklikket på. Hvis der gør, skiftes der til dette ark. Hvis ikke kommer der en meddelelse op om at arket ikke er oprettet.
Voila, her er makroerne:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) On Error Resume Next If Not Intersect(Target, Range("B11:B500")) Is Nothing Then If Target.Value <> "" Then Cancel = True Call GoToSheet End If End If On Error GoTo 0 End Sub
Private Sub GoToSheet() On Error Resume Next If Worksheets(ActiveCell.Text) Is Nothing Then MsgBox ActiveCell.Text & " - Arket er ikke oprettet" Else Sheets(ActiveCell.Text).Select End If On Error GoTo 0 End Sub
Har nu sat den ind i "Prosjekter" men når jeg dobbelt klikker på en celle i kolonne B indeholdende en værdi, får jeg et pop up vindue med "tekst fra C kolonne - arket er ikke oprettet"
Så bliver hele Sub MakeSheets til dette (tilføjet linje fremhævet): Sub MakeSheets() Dim rg As Range Dim sh As Worksheet Dim temp, bfound As Boolean Application.ScreenUpdating = False Set rg = Sheets("Prosjekter").Range("B11:B500") 'indsæt For Each C In rg If Len(C) > 0 Then If Not SheetExist(C.Text) Then Worksheets("Master").Copy After:=Sheets(Worksheets.Count) ActiveSheet.Name = C.Value ActiveSheet.Range("H13") = C.Value End If End If Next 'slet temp = rg 'spring de første 68 ark over For x = 69 To ActiveWorkbook.Worksheets.Count bfound = False For y = 1 To UBound(temp, 1) If temp(y, 1) <> "" Then If Worksheets(x).Name = CStr(temp(y, 1)) Then bfound = True Exit For End If End If Next
If bfound = False Then Application.DisplayAlerts = False Worksheets(x).Delete Application.DisplayAlerts = True End If Next Sheets("Prosjekter").Select Application.ScreenUpdating = True End Sub
Dog får jeg pop up vindue med navnekonflikt ca 8 gange for hvert ark den opretter. navnene er nogle jeg bruger og de går igen på alle ark. Kan jeg slippe for pop up vinduet? dvs. exel ignorere navne konflikten uden at skulle ændre navn på konflikterne i alle ark.
Jeg forstår ikke hvorfor du får de konflikter. Jeg oplever ingen konflikter her, men har selvfølgelig heller ikke oprettet "Projekter" med hele området B11:B500 udfyldt med værdier. Måske kan jeg finde ud af det hvis jeg ser dit ark? Du kan evt. maile det til mig. Mailadresse finder du i min profil. Jeg går i seng nu. Kan se på det i morgen.
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.