Avatar billede jwulff Nybegynder
05. november 2012 - 14:35 Der er 1 kommentar og
1 løsning

Template Sheet

Hej

Jeg har følgende kode som gendanner et sheet tilbage baseret på et template sheet. Koden fungerer egentlig perfekt, når man står i det sheet, som man ønsker gendannet.

Mit problem er, at jeg ønsker at gendanne et sheet ved at trykke på en knap i et andet sheet. Det kan jeg ikke helt få til at fungere.

EKSEMPEL:
Sheet1: Knap til at gendanne Sheet2.
Sheet2: Sheetet jeg ønsker gendannet
TemplateSheet: Her har jeg lavet min template.


KODE:
Sub useTemplate()
    Dim aWs    As Worksheet
    Dim tempWs As Worksheet
    Set tempWs = Worksheets("TemplateSheet")
    Dim sWs    As String
    Set aWs = ActiveSheet
    sWs = aWs.Name
    With Application
        .ScreenUpdating = False
        .DisplayAlerts = False   
        On Error Resume Next
        With tempWs
            .Visible = 1
            .Copy after:=ThisWorkbook.Worksheets(Worksheets.Count)
            .Visible = 2
        End With
        aWs.Delete
        With ActiveSheet
            .Name = sWs
        End With
        On Error GoTo 0
        .ScreenUpdating = True
        .DisplayAlerts = True
    End With
End Sub

Mvh.
Jacob
Avatar billede jwulff Nybegynder
05. november 2012 - 14:39 #1
Og så kom jeg allerede lidt længere :)

Nu er den der næsten. Men nu laver den også en kopi af template sheetet, og det skal den jo ikke....


KODE:
Dim aWs    As Worksheet
    Dim tempWs As Worksheet
    Set tempWs = Worksheets("booking request template")
    Dim sWs    As String
    Set aWs = Worksheets("booking request")
    sWs = aWs.Name
    With Application
        .ScreenUpdating = False
        .DisplayAlerts = False
        On Error Resume Next
        With tempWs
            .Visible = 1
            .Copy after:=Worksheets("booking request")
            .Visible = 2
        End With
        aWs.Delete
        With Worksheets("booking request")
            .Name = sWs
        End With
        On Error GoTo 0
        .ScreenUpdating = True
        .DisplayAlerts = True
    End With
Avatar billede jwulff Nybegynder
06. november 2012 - 07:48 #2
Fik følgende løsning til at virke i aftes:

    ' delete sheet if it exists - do not display alert
    Application.DisplayAlerts = False
    On Error Resume Next
    Sheets("booking request").Delete
    On Error GoTo 0

    Dim Sh As Worksheet, TemplateSh As Worksheet
    Dim ShNum As Integer, HighestNum As Integer
    Dim SheetCoreName As String
   
    ' new sheet name
    SheetCoreName = "booking request"
   
    ' template sheet name
    Set TemplateSh = Sheets("booking request template")
   
    ' copy new sheet
    TemplateSh.Copy after:=Sheets(Sheets.Count)
   
    ' make new sheet visible
    ActiveSheet.Visible = xlSheetVisible
   
    ' rename sheet
    ActiveSheet.Name = SheetCoreName
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

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