02. november 2007 - 15:33Der er
2 kommentarer og 2 løsninger
automatisk navngivning af faneblade.
Hejsa Jeg har en udfordring, der består i at skulle lave en woorkbook, der dækker en hel måned, således at der er et sheet for hver dag. Jeg vil derfor gerne have navngivet de enkelte ark med datoen. Lørdag og søndag skal ikke indgå. Et check for helligdage vil være helt perfekt. mvh. Hubertus
While ActiveWorkbook.Sheets.Count > 1 ActiveWorkbook.Sheets(ActiveWorkbook.Sheets.Count).Delete Wend
arkNr = 1
For dag = 1 To xMdDage
Rem beregn om lørdag/søndag eller helligdag dagnr = DatePart("w", xDato, 2, 2)
If Not (erDetHelligdag(Format(xDato, "dd-mm")) <> "" Or dagnr > 5) Then If arkNr > 1 Then ActiveWorkbook.Sheets.Add after:=Worksheets(Worksheets.Count) End If ActiveWorkbook.Sheets(arkNr).Name = xDato arkNr = arkNr + 1 End If
Application.ScreenUpdating = True End Sub Private Sub CommandButton2_Click() 'annuller Unload UserForm1 End Sub Private Sub SpinButton1_SpinUp() Me.TextBox1 = CStr(Val(Me.TextBox1) + 1) End Sub Private Sub SpinButton1_SpinDown() Me.TextBox1 = CStr(Val(Me.TextBox1) - 1) End Sub Private Sub UserForm_activate() housekeeping End Sub Private Sub housekeeping() måneder = Array("Januar", "Februar", "Marts", "April", "Maj", "Juni", "Juli", "August", "September", "Oktober", "November", "December")
Me.ComboBox1.Clear
For m = 0 To 11 Me.ComboBox1.AddItem måneder(m) Next m
Me.ComboBox1.ListIndex = Month(Now) - 1
Me.TextBox1 = Year(Now) End Sub Private Sub opbygMåneden() xDato = "01" + "-" + CStr(Me.ComboBox1.ListIndex + 1) + "-" + Me.TextBox1 OpsætDatoVærdier xDato End Sub Private Sub OpsætDatoVærdier(dato As Date) Dim wdato As Date, wDag dgNavn = Array("", "Mandag", "Tirsdag", "Onsdag", "Torsdag", "Fredag", "Lørdag", "Søndag") mdDage = Array(, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)
Rem Månedsnavn xMd = Month(dato) aktuelleMåned = xMd
Rem Antal dage i måned Rem test skudår xÅr = Year(dato) If xMd = 2 Then If xÅr Mod 4 = 0 Then xMdDage = 29 Else xMdDage = 28 End If Else xMdDage = mdDage(xMd) End If
Rem Skærtorsdag vhDageDato(0) = Format(DateAdd("d", -3, påskedag), "dd-mm")
Rem Langfredag vhDageDato(1) = Format(DateAdd("d", -2, påskedag), "dd-mm")
Rem Påskedag vhDageDato(2) = Format(påskedag, "dd-mm")
Rem 2. Påskedag vhDageDato(3) = Format(DateAdd("d", 1, påskedag), "dd-mm")
Rem St. Bededag vhDageDato(4) = Format(DateAdd("ww", 4, vhDageDato(1)), "dd-mm")
Rem Kr. Himmelfart vhDageDato(5) = Format(DateAdd("ww", 6, vhDageDato(0)), "dd-mm")
Rem Pinsedag vhDageDato(6) = Format(DateAdd("ww", 7, påskedag), "dd-mm")
Rem 2. Pinsedag vhDageDato(7) = Format(DateAdd("d", 1, vhDageDato(6)), "dd-mm") End Sub Public Function erDetHelligdag(dato) 'returnerer helligdagens navn Dim f Rem Faste helligdage For f = 0 To 5 If fhDageDato(f) = dato Then erDetHelligdag = fhDageNavn(f) Exit Function End If Next f
Rem Variable For f = 0 To 7 If vhDageDato(f) = dato Then erDetHelligdag = vhDageNavn(f) Exit Function End If Next f
While ActiveWorkbook.Sheets.Count > 1 ActiveWorkbook.Sheets(ActiveWorkbook.Sheets.Count).Delete Wend
arkNr = 1
For dag = 1 To xMdDage
Rem beregn om lørdag/søndag eller helligdag dagnr = DatePart("w", xDato, 2, 2)
If Not (erDetHelligdag(Format(xDato, "dd-mm")) <> "" Or dagnr > 5) Then If arkNr > 1 Then Sheets(1).Select Sheets(1).Copy After:=Worksheets(Worksheets.Count) End If ActiveWorkbook.Sheets(arkNr).Name = xDato arkNr = arkNr + 1 End If
Unload UserForm1 End Sub Private Sub CommandButton2_Click() 'annuller Unload UserForm1 End Sub Private Sub SpinButton1_SpinUp() Me.TextBox1 = CStr(Val(Me.TextBox1) + 1) End Sub Private Sub SpinButton1_SpinDown() Me.TextBox1 = CStr(Val(Me.TextBox1) - 1) End Sub Private Sub UserForm_activate() housekeeping End Sub Private Sub housekeeping() måneder = Array("Januar", "Februar", "Marts", "April", "Maj", "Juni", "Juli", "August", "September", "Oktober", "November", "December")
Me.ComboBox1.Clear
For m = 0 To 11 Me.ComboBox1.AddItem måneder(m) Next m
Me.ComboBox1.ListIndex = Month(Now) - 1
Me.TextBox1 = Year(Now) End Sub Private Sub opbygMåneden() xDato = "01" + "-" + CStr(Me.ComboBox1.ListIndex + 1) + "-" + Me.TextBox1 OpsætDatoVærdier xDato End Sub Private Sub OpsætDatoVærdier(dato As Date) Dim wdato As Date, wDag dgNavn = Array("", "Mandag", "Tirsdag", "Onsdag", "Torsdag", "Fredag", "Lørdag", "Søndag") mdDage = Array(, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)
Rem Månedsnavn xMd = Month(dato) aktuelleMåned = xMd
Rem Antal dage i måned Rem test skudår xÅr = Year(dato) If xMd = 2 Then If xÅr Mod 4 = 0 Then xMdDage = 29 Else xMdDage = 28 End If Else xMdDage = mdDage(xMd) End If
Rem Skærtorsdag vhDageDato(0) = Format(DateAdd("d", -3, påskedag), "dd-mm")
Rem Langfredag vhDageDato(1) = Format(DateAdd("d", -2, påskedag), "dd-mm")
Rem Påskedag vhDageDato(2) = Format(påskedag, "dd-mm")
Rem 2. Påskedag vhDageDato(3) = Format(DateAdd("d", 1, påskedag), "dd-mm")
Rem St. Bededag vhDageDato(4) = Format(DateAdd("ww", 4, vhDageDato(1)), "dd-mm")
Rem Kr. Himmelfart vhDageDato(5) = Format(DateAdd("ww", 6, vhDageDato(0)), "dd-mm")
Rem Pinsedag vhDageDato(6) = Format(DateAdd("ww", 7, påskedag), "dd-mm")
Rem 2. Pinsedag vhDageDato(7) = Format(DateAdd("d", 1, vhDageDato(6)), "dd-mm") End Sub Public Function erDetHelligdag(dato) 'returnerer helligdagens navn Dim f Rem Faste helligdage For f = 0 To 5 If fhDageDato(f) = dato Then erDetHelligdag = fhDageNavn(f) Exit Function End If Next f
Rem Variable For f = 0 To 7 If vhDageDato(f) = dato Then erDetHelligdag = vhDageNavn(f) Exit Function End If Next f
Den virker helt efter hensigten - super - tak for det :o) mvh. Hubertus
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.