Avatar billede baekmal Nybegynder
22. marts 2010 - 00:29 Der 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
Avatar billede perhol Seniormester
22. marts 2010 - 20:54 #1
Kopi af Master

Disse linjer:
            Set sh = Worksheets.Add(After:=Sheets(Worksheets.Count))
            sh.Name = c.Value

Erstattes af disse:
            Worksheets("Master").Copy After:=Sheets(Worksheets.Count)
            ActiveSheet.Name = c.Value

Vender tilbage om lidt med noget kode (BeforeDoubleClick) der virker som link til ark.
Efter min erfaring virker hyperlink dårligt.
Avatar billede perhol Seniormester
22. marts 2010 - 21:20 #2
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
Avatar billede baekmal Nybegynder
22. marts 2010 - 22:57 #3
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"

Nogen forslag? :-)
Avatar billede baekmal Nybegynder
22. marts 2010 - 23:06 #4
Fik løst den.. glemte at jeg skulle bruge min egen makro samtidig..

Tak for hjælpen

Sender du svar så jeg kan betale :-)
Avatar billede perhol Seniormester
22. marts 2010 - 23:11 #5
Svar ;b)
Avatar billede baekmal Nybegynder
22. marts 2010 - 23:14 #6
En lille ekstra ting.
Kan jeg automatisk i makroen få den til at skrive fanens navn (tal)ved oprettelse i celle H13
Avatar billede perhol Seniormester
22. marts 2010 - 23:58 #7
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
Avatar billede baekmal Nybegynder
23. marts 2010 - 00:25 #8
Fantastisk!! det virker.

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.
Avatar billede perhol Seniormester
23. marts 2010 - 01:12 #9
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.
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
Vi har et stort udvalg af Excel kurser. Find lige det kursus der passer dig lige her.

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