Avatar billede ribo Nybegynder
04. juni 2011 - 11:45 Der er 7 kommentarer og
1 løsning

Indtastningsformular

Jeg har et regneark med 53 ark, en forside samt 52 ark nummereret fra 1 til 52. Arkene 1 til 52 svarer til ugenummerene, og i hvert ugeark ligger 9 skemaer med ugedag og dato for de enkelte dage i ugen. Der skal daglig og op til flere gange om dagen indtastes i ugearkene. Jeg har en ide om at en indtastningsformular ville være helt perfekt til denne opgave.

Når der er indtastet i formularen skal den finde datoen i et af de mange ugeark og indsætte det indtastede ud for dags dato. Nogen der har mod på at kigge på det? Så kan jeg evt. maile filen med eksemplet.

God weekend
Avatar billede supertekst Ekspert
04. juni 2011 - 13:28 #1
DU må godt sende filen - @-adresse under min profil..
Avatar billede bjarnehansen Seniormester
05. juni 2011 - 18:49 #2
du må godt sende filen til bjarne-hansen(at)maildotdk
Avatar billede Michael B. Bom Juniormester
05. juni 2011 - 20:35 #3
Ribo:  du har mange åbne spørgsmål, som vel bør lukkes ;-)
Avatar billede ribo Nybegynder
05. juni 2011 - 21:33 #4
Hej bjarnehansen tak for tilbudet, men lader lige supertekst kigge på den.

Tak p5 for venlig henstilling til oprydning i gamle spørgsmål:-) er hermed udført!
Avatar billede Michael B. Bom Juniormester
05. juni 2011 - 21:44 #5
Velbekomme - håber I finder en løsning, som I deler med os andre videbegærlige... ;-)
Avatar billede supertekst Ekspert
07. juni 2011 - 11:00 #6
Const startRæk = 6
Const slutRæk = 22
Const startKol = 6

Dim medicinRækker As Variant

Dim ugeArk As Worksheet, ugeNr As Byte

Dim dgNavn As Variant
Dim dagNr As Byte
Private Sub worksheet_activate()
Dim ræk As Byte, ugeRæk As Byte, ix As Byte
    medicinRækker = Array(7, 19, 31, 44, 57, 70, 83, 96, 109)

    dgNavn = Array("", "Man", "Tir", "Ons", "Tor", "Fre", "Lør", "Søn")
    dagNr = hentDagensNr(Date)
    ugeNr = beregnUgeNr(Date)
   
    Range("D2") = ugeNr
    Range("D3") = hentDagensNavn(dagNr)
    Range("D4") = Date
   
    Set ugeArk = ActiveWorkbook.Sheets(CStr(ugeNr))
    ix = 0
   
Rem Overfør medicinNavne fra aktuelle ugeark
    For ræk = startRæk To slutRæk Step 2
        ugeRæk = medicinRækker(ix)
        Range("C" & ræk) = ugeArk.Range("D" & ugeRæk)
        ix = ix + 1
    Next ræk
   
Rem overfør evt. dosis (vol) til aktuelle datolinje pr. præparat
    hentDosisFraUgeArk
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim ræk As Byte, kol As Byte, svar As Byte
    ræk = Target.Row
    kol = Target.Column

    If ræk = 3 Then
        If kol >= 5 And kol <= 13 Then
            svar = MsgBox("Opdater kl.: " & CStr(Cells(ræk, kol)) & "?", vbYesNo, "Medicinudlevering")
            If svar = 6 Then
                opdaterUgeArk kol
            End If
        End If
    End If
End Sub
Sub hentDosisFraUgeArk()
Dim kol As Byte, ini As String, vol As String
Dim iRæk As Byte, iKol  As Byte, ix As Byte
    iRæk = startRæk
    iKol = startKol
   
    For ix = 0 To UBound(medicinRækker)
        For kol = 4 To 12 Step 2
        vol = ugeArk.Cells(medicinRækker(ix) + 3 + dagNr, kol)
       
        If vol <> "" Then
            Cells(iRæk, iKol) = vol
        End If
       
        iKol = iKol + 2
        Next kol
        iRæk = iRæk + 2
        iKol = startKol
    Next ix
End Sub
Sub opdaterUgeArk(kol As Byte)
Dim ini As String, vol As String
Dim ræk As Byte, ugeRæk As Byte, ix As Byte
    ix = 0
   
    For ræk = startRæk To slutRæk Step 2
        ugeRæk = medicinRækker(ix) + 3 + dagNr
       
        ini = Cells(ræk, kol)
        vol = Cells(ræk, kol + 1)

Rem Indsætter kun på ugeark, hvis ini + vol er udfyldt
        If ini <> "" And vol <> "" Then
            ugeArk.Cells(ugeRæk, kol - 2) = ini
            ugeArk.Cells(ugeRæk, kol - 1) = vol
        End If
        ix = ix + 1
    Next ræk
End Sub
Private Function beregnUgeNr(dato)
Dim dag1 As Date, denFørsteUgedag, ugeNr, årx, dagx As Date
    dag1 = dato
    denFørsteUgedag = Format(dag1, "w", 2, 2)
    ugeNr = Format(dag1, "ww", 2, 2)
   
Rem ryk frem til uge 1 - hvis den 1. uge ikke er 1
    If ugeNr <> "1" Then
        While Format(dag1, "ww", 2, 2) <> "1"
            dag1 = DateAdd("d", 1, dag1)
        Wend
    Else
        If denFørsteUgedag <> 1 Then
            dag1 = DateAdd("d", (Val(denFørsteUgedag) - 1) * -1, dag1)
        End If
    End If
   
    If uge <> "1" Then
        dag1 = DateAdd("ww", Val(uge) - 1, dag1)
    End If
   
    beregnUgeNr = ugeNr
End Function
Public Function hentDagensNr(dato As Date)
    hentDagensNr = Weekday(dato, vbMonday)
End Function
Private Function hentDagensNavn(dagsnr As Byte)
    hentDagensNavn = dgNavn(dagsnr)
End Function
Avatar billede ribo Nybegynder
08. juni 2011 - 09:53 #7
Hej supertekst

Det virker perfekt!! Tusind tak for hjælpen.

Ribo
Avatar billede supertekst Ekspert
08. juni 2011 - 09:59 #8
Fint & selv tak..
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