Microsoft Calendar Control 10.0 och senare versioner använder ett felaktigt värde för FirstDay-egenskapen

Anteckning

Office 365 ProPlus byter namn till Microsoft 365-appar för företag. Mer information om den här ändringen finns i det här blogginlägget.

Ursprungligt KB-nummer:   826761

Anteckning

Den här artikeln gäller en Microsoft Access-databasfil (.mdb) eller en Microsoft Access-databasfil (.accdb). Kräver grundläggande kunskaper i makro, kodning och interoperabilitet.

Symptom

I Microsoft Access visas en felaktig dag för den första dagen i kalenderkontrollen. Det här problemet uppstÃ¥r när du infogar en Microsoft Calendar Control 10.0 eller en senare version i ett formulär eller i en rapport och sedan anger FirstDay egenskapen fÃ¥r calendar control med hjändergegelyringar (Microsoft Visual Basic for Applications).

Du kan till exempel ange FirstDay egenskapen för kalenderkontrollen till vbMonday eller vbTuesday. När du ställer in FirstDay egenskapen för kalenderkontrollen till vbTuesdayanvänds onsdag som den första dagen i veckan.

Anteckning

När du använder tidigare versioner av Kalenderkontroll kan du ange FirstDay egenskapen korrekt.

Orsak

Det här problemet uppstår eftersom de inneboende konstanterna för de dagar som definieras i Microsoft Visual Basic, till exempel vbSunday och vbMonday, inte är associerade med rätt dagvärde.

Lösning

SÃ¥ã¤r du Ã¥ã¥sa du problemet:

  1. Bestäm kopplingen mellan dagarna, VBA-inneboende konstanter och de numeriska värden som är associerade till rätt dagvärden och VBA-inneboende konstanter. Gör så här:

    1. Starta åtkomst.

    2. Öppna exempeldatabasen Northwind.

    3. Klicka på Formulär under Objekti databasfönstret .

      Anteckning

      I Access 2007 klickar du på fliken Skapa och sedan på Formulärdesign i gruppen Formulär.

    4. Dubbelklicka på Skapa formulär i designvyn iden högra rutan.

      Anteckning

      Hoppa över det här steget i Access 2007.

    5. Klicka på ActiveX ControlInfoga-menyn .

    Anteckning

    Klicka på fliken Design i Access 2007 och klicka sedan på Infoga ActiveX-kontroll i gruppen Kontroller.

    1. I dialogrutan Infoga ActiveX-kontroll markerar du Kalenderkontroll 10.0 eller en senare version i listrutan Välj en ActiveX-kontroll och klickar sedan på OK.

    2. Lägg till en kommandoknapp i formuläret som har egenskaperna inställda på följande sätt:

      Egenskap Value
      Name testFD
      Caption Ändra första dagen
    3. Klicka på SparaArkiv-menyn.

      Anteckning

      I Access 2007 klickar du på Microsoft Office-knappenoch sedan på Spara.

    4. Skriv Formulär1 i rutan Formulär1 i dialogrutan Formulär och klicka sedan på OK för att spara formuläret Form1.

    5. Klicka på KodVisa-menyn .

      Anteckning

      Klicka på fliken Design i Access 2007 och klicka sedan på Visa kod i gruppen Verktyg.

    6. Skriv eller klistra in följande kod i Visual Basic Editor:

      Option Compare Database
      
      Private Sub testFD_Click()
          Calendar0.FirstDay = vbTuesday
      End Sub
      
    7. Öppna Formulär1 i formulärvyn.

    8. Klicka på knappen Ändra första dag.

      Anteckning

      Om den första kolumnen i kalenderkontrollen inte är inställd på tisdag tecknar du dagen i den första kolumnen.

    9. Klicka på Omedelbart fönsterVisa-menyn i Visual Basic Editor.

    10. Skriv ?vbTuesdayi fönstret Omedelbar och tryck sedan på RETUR.

      Lägg märke till det numeriska värdet.

    11. Upprepa steg j genom steg o genom att ersätta vbTuesday med andra VBA inneboende konstanter, såsom vbMondayoch vbWednesday.

      Observera att du har följande tabell för att visa associationen mellan dagarna, VBA-inneboende konstanter och de numeriska värden som är associerade till rätt dagvärden och VBA-inneboende konstanter.

      Veckodag VBA Inneboende Konstant Associerat numeriskt värde
      Måndag vbSunday 1
      Tisdag vbMånsdagar 2
      Onsdag vb Tisdag 3
      Torsdag vbWednesday 4
      Fredag vbThursday (vbThursday) 5
      Lördag vbFridagen 6
      Söndag vbSaturday 7
  2. Skapa en global anpassad uppräkning som är korrekt mappad till veckodagarna. Gör så här:

    1. Klicka på Modul under Objekti databasfönstret .

      Anteckning

      I Access 2007 klickar du på fliken Skapa, klickar på pilen under Makro i gruppen Annat och klickar sedan på Modul.

    2. Klicka på ModulInfoga-menyn .

      Anteckning

      Hoppa över det här steget i Access 2007.

    3. Skriv eller klistra in följande kod i Visual Basic Editor:

      Option Explicit
      
      Public Enum nwFirstDay
         nwMonday = 1
         nwTuesday = 2
         nwWednesday = 3
         nwThursday = 4
         nwFriday = 5
         nwSaturday = 6
         nwSunday = 7
      End Enum
      

      Anteckning

      Skapa uppräkningen enligt beskrivningen i kolumnen "Veckodag" och i motsvarande kolumn "Numeriskt värde associerat" i tabellen som är i steg 1r.

    4. Namnge modulen Day_Associationoch spara den.

    5. Stäng Visual Basic Editor.

  3. Ersätt VBA-inneboende konstanter i ditt program med konstanterna som finns i den anpassade uppräkningen som beskrivs i steg 2.

    Om din ursprungliga kod till exempel är

    Calendar0.FirstDay = vbTuesday
    

    ändra koden för att använda anpassad uppräkning enligt följande:

    Calendar0.FirstDay = nwTuesday
    
  4. Kör programmet.

Mer information

VBA-inneboende konstanter beror inte på systemets lokala information. På en dator som till exempel har det lokaliserade operativsystemet på tyska är den första dagen i veckan måndag. Det numeriska värdet som associeras med måndag på datorn är alltid 0.

Eftersom Kalenderkontroll 10.0 eller en senare version är en global Microsoft ActiveX-kontroll kan du inte styra de numeriska värden som är associerade med VBA-inneboende konstanter baserat på datorns specifikationer. Därför uppstår problemet som nämns i avsnittet "Symptom" i den här artikeln.

Åtgärder för att återskapa problemet

  1. Starta åtkomst.

  2. Öppna exempeldatabasen Northwind.

  3. Klicka på Formulär under Objekti databasfönstret .

    Anteckning

    I Access 2007 klickar du på fliken Skapa och sedan på Formulärdesign i gruppen Formulär.

  4. Dubbelklicka på Skapa formulär i designvyn iden högra rutan.

    Anteckning

    Hoppa över det här steget i Access 2007.

  5. Klicka på ActiveX ControlInfoga-menyn .

    Anteckning

    Klicka på fliken Design i Access 2007 och klicka sedan på Infoga ActiveX-kontroll i gruppen Kontroller.

  6. I dialogrutan Infoga ActiveX-kontroll markerar du Kalenderkontroll 10.0 eller en senare version i listrutan Välj en ActiveX-kontroll och klickar sedan på OK.

  7. Lägg till en kommandoknapp i formuläret som har egenskaperna inställda på följande sätt:

    Egenskap Value
    Name testFD
    Caption Ändra första dagen
  8. Klicka på KodVisa-menyn .

    Anteckning

    Klicka på fliken Design i Access 2007 och klicka sedan på Visa kod i gruppen Verktyg.

  9. Skriv eller klistra in följande kod i Visual Basic Editor:

    Option Compare Database
    
    Private Sub testFD_Click()
     Calendar0.FirstDay = vbTuesday
    End Sub
    
  10. Klicka på SparaArkiv-menyn.

    Anteckning

    I Access 2007 klickar du på Microsoft Office-knappenoch sedan på Spara som.

  11. Skriv Formulär1 i rutan Formulärnamn i dialogrutan Spara som och klicka sedan på OK för att spara formuläret Form1.

  12. Öppna Formulär1 i formulärvyn.

  13. Klicka på knappen Ändra första dag.

    Även om du anger FirstDay egenskapen för kalenderkontrollen till vbTuesdayväljer kalendern onsdag till den första dagen i veckan.

Referenser

Om du vill ha mer information om kalenderkontroll och egenskaperna Kalenderkontroll öppnar du Mscal.hlp och söker sedan efter lämpligt ämne. Mscal.hlp finns i följande mappar:

Microsoft Access 2002

Installationsenhet:\Program Files\Microsoft Office\Office10

Microsoft Office Access 2003

Installationsenhet:\Program Files\Microsoft Office\Office11

Anteckning

Installationsenhet är en platshållare för namnet på installationsenheten.