Avatar billede bccinlove Nybegynder
13. november 2001 - 12:05 Der er 16 kommentarer og
1 løsning

Calendar skal returnere DayOfWeek (f.eks. onsdag)

Hey,

Jeg har et lille problem men en kalender i VB. Jeg skal have den valgte dag ud. Dvs hvis der vælges 13. november 2001 så skal jeg kunne skrive i en msgbox Onsdag.

How to do this?
Avatar billede bennytordrup Nybegynder
13. november 2001 - 12:10 #1
Dim sWeekDays(6) as string

sweekdays(0) = \'Mandag\'
sweekdays(1) = \'Tirsdag\'
sweekdays(2) = \'Onsdag\'
sweekdays(3) = \'Torsdat\'
sweekdays(4) = \'Fredag\'
sweekdays(5) = \'Lørdag\'
sweekdays(6) = \'Søndag\'

msbgox sweekdays(datepart(\"w\", date,vbUseSystemDayOfWeek ))
Avatar billede bennytordrup Nybegynder
13. november 2001 - 12:11 #2
Forudsat, at du har dansk opsætning, hvor Mandag er første ugedag
Avatar billede bennytordrup Nybegynder
13. november 2001 - 12:12 #3
Du kan også ændre således, at Søndag ligger på index 0:

msbgox sweekdays(datepart(\"w\", date))
Avatar billede bccinlove Nybegynder
13. november 2001 - 12:21 #4
Hvordan er formlen så hvis jeg også skal have navne på månederne istedet for tal?
Avatar billede bennytordrup Nybegynder
13. november 2001 - 12:27 #5
Dim sMonths(1 to 12) as string

sMonths(1) = \'Januar\'
sMonths(2) = \'Februar\'
sMonths(3) = \'Marts\'
sMonths(4) = \'April\'
sMonths(5) = \'Maj\'
sMonths(6) = \'Juni\'
sMonths(7) = \'Juli\'
sMonths(8) = \'August\'
sMonths(9) = \'September\'
sMonths(10) = \'Oktober\'
sMonths(11) = \'November\'
sMonths(12) = \'Decemboer\'

msgbox smonths(datepart(\"m\", date))
Avatar billede sjh Nybegynder
13. november 2001 - 12:30 #6
\'Her et lille eksempel på en kalender.

Private Function MaxDayInMonth(nMonth As Long, Optional nYear As Long = 0) As Long
  Select Case nMonth
      Case 9, 4, 6, 11
          MaxDayInMonth = 30
      Case 2
          If (nYear Mod 4) = 0 Then
            If nYear Mod 100 = 0 Then
              If nYear Mod 400 = 0 Then
                MaxDayInMonth = 29
                  Else
                MaxDayInMonth = 28
              End If
                Else
              MaxDayInMonth = 29
            End If
              Else
            MaxDayInMonth = 28
          End If
      Case Else
        MaxDayInMonth = 31
  End Select
End Function

Private Sub Combo1_Click()
Dim i As Long
Combo2.Clear
  For i = 1 To MaxDayInMonth(Val(Combo1.ListIndex + 1), Val(Text2))
    Combo2.AddItem i
  Next i
Combo2.ListIndex = 0
End Sub

Private Sub Combo2_Click()
Text1 = Format(WeekDay(DateSerial(Val(Text2), Val(Combo1.ListIndex + 1), Val(Combo2.ListIndex + 1))), \"dddd\")  \'Dato
End Sub

Private Sub Form_Load()
Dim i As Long

  Text1.Text = \"\"
  Text2.Text = \"2001\"

  For i = 1 To 12
    Combo1.AddItem (i) & \" - \" & Format(\"1-\" & i & \"-0\", \"MMMM\")
  Next i
Combo1.ListIndex = 0
End Sub
Avatar billede bccinlove Nybegynder
13. november 2001 - 12:33 #7
Takkker !
Avatar billede bccinlove Nybegynder
13. november 2001 - 13:15 #8
DET VIRKER STADIG IKKE!!!

Desvæære,

Jeg har lige gennemtestet koden og der er fejl!

Lige meget hvilken dag jeg står på bliver \"onsdag\" returneret som dagen. Det samme sker for månederne! (November for alle måneder)

Help!
Avatar billede bennytordrup Nybegynder
13. november 2001 - 13:18 #9
Du skal lige skifte argumentet \"Date\" ud med den datoværdi, du vil teste på. Date returnerer dags dato.
Avatar billede bccinlove Nybegynder
13. november 2001 - 13:24 #10
Sådan her?
MsgBox sMonths(DatePart(\"m\", Calendar1.Month))

og

MsgBox sweekdays(datepart(\"w\", Calendar1.day))

??
Avatar billede bccinlove Nybegynder
13. november 2001 - 13:29 #11
Det giver i hvert fald forkert værdier!
Avatar billede bennytordrup Nybegynder
13. november 2001 - 13:30 #12
Hvis du direkte fra Calendar1 kan hente månedstallet og dag-tallet, så skal du bruge dem som indeks direkte i mine arrays (husk: dagen er 0-baseret)

Hvis du kun kan hente en datoværdi (13-11-2001) fra Calendar1, skal du bruge den som argument til DatePart.
Avatar billede bccinlove Nybegynder
13. november 2001 - 13:35 #13
OK her er hele koden:

Private Sub Command1_Click()
Dim sWeekDays(6) As String
Dim sMonths(1 To 12) As String

sWeekDays(0) = \"Mandag\"
sWeekDays(1) = \"Tirsdag\"
sWeekDays(2) = \"Onsdag\"
sWeekDays(3) = \"Torsdag\"
sWeekDays(4) = \"Fredag\"
sWeekDays(5) = \"Lørdag\"
sWeekDays(6) = \"Søndag\"
sMonths(1) = \"Januar\"
sMonths(2) = \"Februar\"
sMonths(3) = \"Marts\"
sMonths(4) = \"April\"
sMonths(5) = \"Maj\"
sMonths(6) = \"Juni\"
sMonths(7) = \"Juli\"
sMonths(8) = \"August\"
sMonths(9) = \"September\"
sMonths(10) = \"Oktober\"
sMonths(11) = \"November\"
sMonths(12) = \"December\"

\'MsgBox sWeekDays(DatePart(\"w\", Date)) & \" \" & \"d.\" & \" \" & Calendar1.Day & \". \" & sMonths(DatePart(\"m\", Date)) & \" \" & Calendar1.Year
MsgBox sWeekDays(DatePart(\"w\", Calendar1.Day))
\'MsgBox sMonths(DatePart(\"m\", Calendar1.Month))
\'MsgBox sWeekDays(DatePart(\"w\", Calendar1, vbUseSystemDayOfWeek))
End Sub

Hvis idag vælges skal msgboxen skrive:

Tirsdag d. 13. November 2001

Kan du klare den ?
Avatar billede bennytordrup Nybegynder
13. november 2001 - 13:38 #14
Hvad type er Calendar1
Avatar billede bccinlove Nybegynder
13. november 2001 - 13:39 #15
Microsoft Calendar Control 8,0
Avatar billede bennytordrup Nybegynder
13. november 2001 - 13:51 #16
Dim sWeekDays(1 To 7) As String
Dim sMonths(1 To 12) As String

sWeekDays(1) = \"Mandag\"
sWeekDays(2) = \"Tirsdag\"
sWeekDays(3) = \"Onsdag\"
sWeekDays(4) = \"Torsdag\"
sWeekDays(5) = \"Fredag\"
sWeekDays(6) = \"Lørdag\"
sWeekDays(7) = \"Søndag\"
sMonths(1) = \"Januar\"
sMonths(2) = \"Februar\"
sMonths(3) = \"Marts\"
sMonths(4) = \"April\"
sMonths(5) = \"Maj\"
sMonths(6) = \"Juni\"
sMonths(7) = \"Juli\"
sMonths(8) = \"August\"
sMonths(9) = \"September\"
sMonths(10) = \"Oktober\"
sMonths(11) = \"November\"
sMonths(12) = \"December\"

MsgBox sWeekDays(DatePart(\"w\", Calendar1.Value, vbUseSystemDayOfWeek)) & \" \" & \"d.\" & \" \" & Calendar1.Day & \". \" & sMonths(DatePart(\"m\", Calendar1.Value)) & \" \" & Calendar1.Year

End Sub


Du bør nok erklære de to arrays globalt og initialisere dem en gang for alle.
Avatar billede bccinlove Nybegynder
13. november 2001 - 13:58 #17
Sådan!
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