I første felt skriver du f.eks. 01-01-04. I det næste felt skrives 02-01-04. Marker de to felter og træk i den lille firkant i nederste højre hjørne indtil alle 366 felter er fyldt med datoer. Bevar markeringen af alle felterne og vælg Formater/Celler og marker brugerdefineret. Under "Type" skriver du dddd" den " d". "mmmm
1. Hvordan får jeg nemmest puttet ugerne ind imellem jeg har skrevet ? 2. Hvordan får jeg lagt den samme tekst ind i alle tirsdage ? 3. Hvordan får jeg dagene til at begynde med stort ?
1. Det gør du lettest ved at skrive =UGE.NR(A1) (hvis dine datoer står i A1) i en ny kolonne, og så kopiere den hele vejen ned. Så vidt jeg ved, kan datoen ikke direkte formateres som ugernummer.
3. Jeg kender ikke nogen metode til at formatere med stort bogstav, så jeg kan kun foreslå en ny kolonne: =STORT.FORBOGSTAV(TEKST(A1;"dddd"))&" den "&TEKST(A1;" d"". ""mmmm") (igen forudsat at A1 indeholder datoen).
Hvis du kun skal lave ovenstående én gang og gerne vil undgå datokolonnen, kan du jo blot kopiere og vælge indsæt speciel "værdier" når du er færdig. Herefter kan kolonnen med de oprindelige datoer slettes.
Nu vil jeg gerne have dette til at fortsætte, altså hvor den kun tager mandag, onsdag, fredag med, samt ugen og et mellemrum. Men når jeg kopierer, så kopierer den bare de 2 uger på skift.
i = 1 For o = CLng(Now()) To CLng(Now() + 365) If Weekday(o) = 1 Then Cells(i, 1).Value = "=weeknum(" & o & ")" Cells(i, 1).Select Cells(i, 1).Value = "Uge " & Cells(i, 1).Value i = i + 1 Else If Weekday(o) = 2 Or Weekday(o) = 4 Or Weekday(o) = 6 Then Cells(i, 1).Value = o
Til venstre skal du finde dit regneark, sikkert VBAProject(Mappe#) hvis du lige har åbnet et nyt regneark.
Klik på + til venstre for navnet og højreklik på ThisWorkbook. Vælg så Insert og derefter Module. Paste hele Sub'en ind i modulet og tryk F5, så bliver den afviklet.
For o = StartDato To DateAdd("yyyy", 1, StartDato) If WeekDay(o) = 1 Then Cells(i, 1).Value = "Uge " & DatePart("ww", o) Cells(i, 1).Font.Bold = True Else If WeekDay(o) = 2 Or WeekDay(o) = 4 Or WeekDay(o) = 6 Then Cells(i, 1).Value = StrConv(Format(o, "dddd"), vbProperCase) & " den " & Format(o, " d"". ""mmmm") If WeekDay(o) = 2 Then Cells(i, 2).Value = "Samme besked" End If End If i = i + 1 Next o
>> sjap, den er meget mere overskuelig. Jeg har dog på fornemmelsen at der er tale om et 'skole'-skema, så måske går opdelingen på et kalenderår ikke helt.
Og tak for den der vbProperCase, den ledte jeg efter.
>> googolplex, der er hjælp i VB editorens egen hjælp. Ellers er der masser af bøger på engelsk. En enkelt dansk med grundlæggende VBA er IDG's 'Excel 2000 programmering med VBA. Måske også i nyere udgave, men VBA har endnu ikke ændret sig væsentligt.
googolplex -> Du svarer ikke længere på spørgsmålene, men uanset om du stadig har brug for det eller ej, så får du her koden, der skulle leve op til dine krav som beskrevet kl. 11:47:35 (med lidt modifikationer inspireret af brynils sidste kommentar).
Sub DatoRække() Dim i, o As Double Dim UgeNr As Integer
Const StartDato = #1/1/2004# 'Kan ændres efter behov Const SlutDato = #1/1/2005# 'Kan ændres efter behov
i = 1 UgeNr = DatePart("ww", StartDato)
For o = StartDato To SlutDato If DatePart("ww", o) > UgeNr Then i = i + 1 If WeekDay(o) = 1 Then UgeNr = DatePart("ww", o) Cells(i, 1).Value = "Uge " & UgeNr Cells(i, 1).Font.Bold = True Else If WeekDay(o) = 2 Or WeekDay(o) = 4 Or WeekDay(o) = 6 Then Cells(i, 1).Value = StrConv(Format(o, "dddd"), vbProperCase) & " den " & Format(o, " d"". ""mmmm") If WeekDay(o) = 2 Then Cells(i, 2).Value = "Samme besked" End If End If i = i + 1 Next o
Sub DatoRække() Dim i, o As Double Dim UgeNr As Integer
Const StartDato = #1/1/2004# 'Kan ændres efter behov Const SlutDato = #1/1/2006# 'Kan ændres efter behov
i = 1 UgeNr = DatePart("ww", StartDato, vbMonday, vbFirstFourDays)
For o = StartDato To SlutDato If DatePart("ww", o, vbMonday, vbFirstFourDays) > UgeNr Then i = i + 1 If Weekday(o) = 2 Then ' SKAL VÆRE 2 for MANDAG UgeNr = DatePart("ww", o, vbMonday, vbFirstFourDays) Cells(i, 1).Value = "Uge " & UgeNr Cells(i, 1).Font.Bold = True Else If Weekday(o) = 2 Or Weekday(o) = 4 Or Weekday(o) = 6 Then Cells(i, 1).Value = StrConv(Format(o, "dddd"), vbProperCase) & " den " & Format(o, " d"". ""mmmm") If Weekday(o) = 2 Then Cells(i, 2).Value = "Samme besked" End If End If i = i + 1 Next o
Sub DatoRække() Dim i, o As Double Dim UgeNr As Integer
Const StartDato = #1/1/2004# 'Kan ændres efter behov Const SlutDato = #1/8/2006# 'Kan ændres efter behov
i = 1 UgeNr = DatePart("ww", StartDato)
For o = StartDato To SlutDato If DatePart("ww", o, vbMonday, vbFirstFourDays) <> UgeNr Then UgeNr = DatePart("ww", o, vbMonday, vbFirstFourDays) Cells(i, 1).Value = "Uge " & UgeNr Cells(i, 1).Font.Bold = True i = i + 1 End If If WeekDay(o) = 2 Or WeekDay(o) = 4 Or WeekDay(o) = 6 Then Cells(i, 1).Value = StrConv(Format(o, "dddd"), vbProperCase) & " den " & Format(o, " d"". ""mmmm") If WeekDay(o) = 2 Then Cells(i, 2).Value = "Samme besked" End If i = i + 1 Next o
Det var godt nok er svær fødsel :0) Nogen gange tror man, man har den - lige indtil man får set efter i sømmene. Tak for godt teamwork.
Nogen der ved hvor langt Danmark Rundt er nået. Finalerundstrækningen ligger 300 m herfra, så jeg skal da lige ned at glo lidt - formodenligt sammen med 3.000.000 andre i det her vejr!
;) Det kan ikke være for de 2 minutter du ser dem suse forbi, så nu er lissågodt som senere! Og selvtak!
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.