Avatar billede sune56 Nybegynder
28. april 2008 - 20:11 Der er 3 kommentarer og
1 løsning

Manuel opdatering af funktionsudregninger

Hej eksperter...

Her et råb om hjælp fra en rookie udi programmeringens kunstart. Jeg har i Excel 2007/VBA lavet et regneark til brug ved udregning af antallet af timer, over et ark med samtlige timer for en given persons tilstedeværelse på arbejdspladsen.

Jeg har bygget Workbooken op således, at den indeholder et Worksheet med samtlige timer for personen og et Worksheet for hver af årets 12 måneder. For hver enkelt dag, har jeg indsat hjemmelavede funktioner, der udregner starttid hhv. sluttid. Funktionerne ser ud ála dette:


Function Starttid(Y As Integer, Z As Integer)
Application.Volatile

Dim tidspunkt As Date
Dim i As Integer

  For i = 2 To 500 Step 8
  If Y = Worksheets("Vagtplaner").Cells(i, "C") And Z = Worksheets("Vagtplaner").Cells(i, "E") Then
 
      tidspunkt = Worksheets("Vagtplaner").Cells(i + 1, "B")
 
  ElseIf Y = Worksheets("Vagtplaner").Cells(i, "G") And Z = Worksheets("Vagtplaner").Cells(i, "I") Then
          tidspunkt = Worksheets("Vagtplaner").Cells(i + 1, "F")
 
  ElseIf Y = Worksheets("Vagtplaner").Cells(i, "K") And Z = Worksheets("Vagtplaner").Cells(i, "M") Then
        tidspunkt = Worksheets("Vagtplaner").Cells(i + 1, "J")
 
  ElseIf Y = Worksheets("Vagtplaner").Cells(i, "O") And Z = Worksheets("Vagtplaner").Cells(i, "Q") Then
        tidspunkt = Worksheets("Vagtplaner").Cells(i + 1, "N")
 
  ElseIf Y = Worksheets("Vagtplaner").Cells(i, "S") And Z = Worksheets("Vagtplaner").Cells(i, "U") Then
        tidspunkt = Worksheets("Vagtplaner").Cells(i + 1, "R")
    End If
    Next i
      Starttid = tidspunkt

End Function


Mit problem er nu, at Excel som udgangspunkt ikke selv opdaterer værdierne for hver enkelt dag, selvom data for den givne dag bliver indsat i "data-arket" (a.k.a. "Vagtplaner"). Derfor indsatte jeg - efter at have søgt på nettet - linjen:

Application.Volatile

som det fremgår af ovenstående kode. Jeg fortrød dog forholdsvis hurtigt, da arbejdet med Workbooken blev utroligt omsonst, idet Excel udregner for hver lille ændring jeg laver i Workbooken. Mit spørgsmål er derfor nu:

Kan det ikke lade sig gøre, at lave en makro som opdaterer værdierne for samtlige funktioner i arket når man trykker på en knap? eller om ikke andet, at finde en anden måde, så man hverken er tvunget til manuelt at klikke på alle celler der skal opdateres eller til at skulle vente i op mod 100 år på at Excel får regnet færdig hver gang man ændrer på kant-indstillinger for en celle?

Med venlig hilsen, Sune
Avatar billede kabbak Professor
29. april 2008 - 11:35 #1
Public Sub Opdater()
Application.CalculateFull
End Sub
Avatar billede kabbak Professor
29. april 2008 - 11:43 #2
det er fundet i hjælpen

Example
This example compares the version of Microsoft Excel with the version of Excel that the workbook was last calculated in. If the two version numbers are different, a full calculation of the data in all open workbooks is performed.

If Application.CalculationVersion <> _
    Workbooks(1).CalculationVersion Then
    Application.CalculateFull
End If
Avatar billede sune56 Nybegynder
29. april 2008 - 17:06 #3
Skide godt... det var lige hvad jeg ledte efter.

Jeg er rimelig ny udi eksperten.dk, men så vidt jeg husker, så skal du sende et svar for at jeg kan overføre pointene til dig nu?
Avatar billede kabbak Professor
29. april 2008 - 23:03 #4
et svar ;-))
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
Kurser inden for grundlæggende programmering

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