20. februar 2002 - 23:13Der er
16 kommentarer og 3 løsninger
3 spørsmål...
1. Hvordan får man ukenummer i f.eks. celle A1? (Helst skal det være sånn at når dokumentet opprettes i uke 8, utfylles A1 med 8 - og når dokumentet åpnes i uke 9, står der stadig vekk 8 i A1)
2. Hvordan får man deretter utfylt f.eks. cellene B2 til B8 med datoene i uke 8 (dd.mm)?
3. Noen celler inneholder sum av tid (f.eks. 10:30) - hvordan kan disse "konverteres" til desimaltall (10,5 timer i eksempelet)?
Jeg bruker engelsk Excel XP, men skal nok alltid finne ut av å oversette fra dansk.
Jeg regner med dette er rimelig "nemme" spørsmål for dem som kan Excel, men si til hvis der skal flere point i.
Spør også hvis det er noe av det norske som ikke er mulig å forstå :-)
Etter noe arbeid fikk jeg ditt svar på nr. 1 til å fungere. (Jeg var nødt til å installere en Add-In, og MS har åpenbart endret litt på funksjonen i Office XP. Jeg måtte nemlig også angi om uken starter søndag eller mandag.)
Men når dokumentet åpnes igjen i neste uke, vil der da ikke stå uke 9? Jeg ville helst at cellen skulle inneholde ukenummer for den uken dokumentet ble opprettet.
3. virket fint.
Hvis 2 virkelig er et svært spørsmål, skal jeg nok proppe noen flere point i - jeg trodde bare det ville være "nemt" for en ekspert. :-)
rvm >> Den virker helt fint hvis man har en dato i A1, men det har jeg vel egentlig ikke? Jeg har jo kun et ukenummer. I hvert fall vises dato (f.eks. i B2) som 08.01.1900, og i B3 som 09.01.1900... :-(
spm 1 og 2 Du sætter denne makro ind i ThisWorkbook og ændrer Sheet1 til aktuel arknavn.
Private Sub Workbook_Open() If IsEmpty(Range("Sheet1!B1")) Then Range("Sheet1!b1").Value = Format(Date, "ww") For x = 1 To 7 Cells(x + 1, 2) = Format(Date + x - 1, "dd-mm") Next End If End Sub
Lige et par ændringer: Private Sub Workbook_Open() If IsEmpty(Range("Sheet1!B1")) Then Range("Sheet1!b1").Value = Format(Date, "ww", vbMonday, vbFirstFourDays) For x = 1 To 7 Worksheets("Sheet1").Cells(x + 1, 2) = Format(Date + x - 1, "dd-mm") Next End If End Sub
Jeg ved godt du kun har et ugenummer, men du starter jo oprindeligt med en dato, som du så laver om til et ugenummer... Du må bare have en celle (eventuelt på et andet ark), hvor din dato står
Jeg har lavet et par ændringer mere. Makroen undersøger om der står noget i B1. Hvis ikke indsættes ugenr og datoer, ellers ikke. Dvs at første gang den åbnes indsættes det ønskede og det ændres IKKE næste gang arket åbnes. (heller ikke selvom det åbnes i uge 9)
Private Sub Workbook_Open() If IsEmpty(Range("Sheet1!B1")) Then Range("Sheet1!b1").Formula = "=Uge.nr(b2)" For x = 1 To 7 Worksheets("Sheet1").Cells(x + 1, 2).NumberFormat = "dd/mm" Worksheets("Sheet1").Cells(x + 1, 2) = Date + x - 1 Next End If End Sub
# Man tænker så godt når man har talt # :-) Makroerne virker jo kun mandag, fordi de 7 dato bliver taget fortløbende fra den dag arket bliver oprettet. Det her er bedre:
Private Sub Workbook_Open() If IsEmpty(Range("Sheet1!B1")) Then Range("Sheet1!b1").Formula = "=uge.nr(b2)" For x = 1 To 7 y = Weekday(Date, vbMonday) Worksheets("Sheet1").Cells(x + 1, 2).NumberFormat = "dd/mm" Worksheets("Sheet1").Cells(x + 1, 2) = Date + x - y Next End If End Sub
bak >> Den siste der fungerer meget godt! I hvert fall når jeg "Run Sub/UserForm F5" :-) Men den vil ikke kjøre av seg selv når regnearket åpnes... Hva gjør jeg galt?
Du skal åbne VBA-editoren og finde kodemodulet der hedder ThisWorkbook og indsætte den der. En anden valgmulighed er at indsætte den i et almindeligt modul og omdøbe koden til sub auto_open()
Private Sub Auto_Open() If IsEmpty(Range("Ark1!B3")) Then Range("Ark1!b3").Formula = "=uge.nr(c4)" For x = 1 To 7 y = Weekday(Date, vbMonday) Worksheets("Ark1").Cells(x + 3, 3).NumberFormat = "dd/mm" Worksheets("Ark1").Cells(x + 3, 3) = Date + x - y Next End If End Sub
Argh!! Jeg skulle nok ha testet det siste svaret først... :-)
bak >> 10 pts ekstra hvis du kan forklare meg hvorfor
Private Sub Workbook_Open() If IsEmpty(Range("Sheet1!B1")) Then Range("Sheet1!b1").Formula = "=weeknum(b2)" For x = 1 To 7 y = Weekday(Date, vbMonday) Worksheets("Sheet1").Cells(x + 1, 2).NumberFormat = "dd/mm" Worksheets("Sheet1").Cells(x + 1, 2) = Date + x - y Next End If End Sub
gir 9 som ukenummer, mens
Private Sub Workbook_Open() If IsEmpty(Range("Sheet1!b3")) Then Range("Sheet1!b3").Formula = "=weeknum(c4)" For x = 1 To 7 y = Weekday(Date, vbMonday) Worksheets("Sheet1").Cells(x + 3, 3).NumberFormat = "dd/mm" Worksheets("Sheet1").Cells(x + 3, 3) = Date + x - y Next End If End Sub
gir 09.01 som ukenummer?? Det eneste som er endret, er jo celle-referenser?
øv... At man alltid skal "kvaje" seg på idiot-feil... :-)
Men enda en gang; takk for hjelpen!
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.