Avatar billede Marting Forsker
10. marts 2016 - 17:34 Der er 11 kommentarer og
1 løsning

Makro som ikke ville køre på "Win XP, Excel 2007", "Win 8 Microsoft Office Home & Student 2013" Eller på "Win 8, Office Home and Student 2010"

Hej

Jeg har testet et regn ark  på ovenstående  det ville kun køre på min win 7, Excel 2007"

Den laver fejl :
UserForm1.Calendar1.Day = Day(Now)

Jeg ville høre om der var en der kunne hjælpe med at få denne makro, til at køre på en win XP maskine som er min arbejdes computer lige nu
Jeg bruger  Excel 2007,

Det er vigtigt at den også kan køre på win 7, Excel 2007

http://play48.com/gratisupload/userprofiles/ffFss1ud5L/K%F8rselsrapport%5F29%5F02%5F2016%2Exlsm

Hilsen Martin
Avatar billede Marting Forsker
10. marts 2016 - 17:46 #1
Avatar billede supertekst Ekspert
11. marts 2016 - 16:55 #2
Hej Martin

Problemet er sikkert at "Calendar" ikke findes på din XP.
Jeg har for meget længe siden konstrueret en kalender, der måske kan anvendes.

Vender tilbage hvis jeg finder den.
Avatar billede Marting Forsker
13. marts 2016 - 19:00 #3
Hej supertekst

Oki det lyder spændende  , jeg troede det var noget standard kode , går koden ikke ind og læser i windows kalenderen ?

Alt denne kode bliver jeg også nød til at "rem" før den ville bare køre lidt på min XP,  og de andre ovenstående  vasioner også -

‘VERSION 1.0 CLASS
‘BEGIN
‘  MultiUse = -1  'True
‘END
‘Attribute VB_Name = "ThisWorkbook"
‘Attribute VB_GlobalNameSpace = False
‘Attribute VB_Creatable = False
‘Attribute VB_PredeclaredId = True
‘Attribute VB_Exposed = True

Hilsen Martin
Avatar billede supertekst Ekspert
14. marts 2016 - 12:54 #4
Har ikke kunnet finde den selvkonstruerede kalender.
Avatar billede supertekst Ekspert
14. marts 2016 - 14:13 #5
Prøv evt. følgende:
Evt. kalender findes således:
Alt+F11 (VBA-vinduet)
- Menu: Tools
-- Additional Controls
--- Kalender eller DateTimePicker kontrolelement
Avatar billede Marting Forsker
14. marts 2016 - 19:36 #6
Hej igen

Øv,  jeg tænker hvorfor kunne den ikke køre på en nyer win og excel vasione

Jeg har prøvet at trykke på Menu den ville ikke på nogen af de maskiner ?

Jeg har lavet prt scr fra min win XP maskine

http://play48.com/gratisupload/userprofiles/ffFss1ud5L/Prt%20Scr%2Ejpg
Avatar billede supertekst Ekspert
15. marts 2016 - 14:29 #7
Hej Martin

Er ved at konstruere en kalender til dig, der også kan anvendes på XP
Avatar billede supertekst Ekspert
15. marts 2016 - 17:08 #8
Så er der en ny version.
Userform kan nu også aktiveres ved at dobbeltklikke på celler i A1

Hvis du sender en mail - så returnerer jeg filen med den nye version af kalender. @-adresse under min profil
Avatar billede Marting Forsker
15. marts 2016 - 19:55 #9
Uah det lyder spændende,  du få her min E-mail

mbg0574@gmail.com kunne den mon også køre på win 8 mmon?

hvad skulle der laves om mon?

Hilsen Martin
Avatar billede supertekst Ekspert
16. marts 2016 - 09:23 #10
Har du modtaget min mail med den nye version?
Avatar billede supertekst Ekspert
21. marts 2016 - 14:05 #11
VBA-kode i Userform som erstatning for "Calendar"
Dim dag As String, dato As Date, ugeNr As Integer, år As Integer
Dim tabel As Variant, dagsnr As Integer
Const ugeDage = "Mandag,Tirsdag,Onsdag,Torsdag,Fredag,Lørdag,Søndag"
Const måneder = "Januar,Februar,Marts,April,Maj,Juni,Juli,August,September,Oktober,November,December"

Dim flag As Boolean
Function beregnUgeNr(dato)
Dim Resten As Single
    Resten = (dato - 2) Mod 7
    beregnUgeNr = Int((dato - DateSerial(Year(dato + 3 - Resten), 1, Resten - 9)) / 7)
End Function
Private Sub Cb_Idag_Click()
    Me.Com_Dag.ListIndex = Day(Now) - 1
    Me.Com_Måned.ListIndex = Month(Now) - 1
    Me.Com_År = Year(Now)
   
    flag = True
    datoSkift
End Sub
Private Sub cb_Ok_Click()
    dato = Me.Com_Dag & "-" & Me.Com_Måned.ListIndex + 1 & "-" & Me.Com_År
    Range("C3") = tabel(hentDagensNr(dato) - 1)
    Range("D3") = Format(dato, "mm-dd")
    Range("E3") = Me.Tb_ugeNr
    Range("F3") = Me.Com_År
   
    Unload Me
   
    ThisWorkbook.findNyRække
End Sub
Private Sub Com_Dag_Change()
    If flag = True Then
        datoSkift
    End If
End Sub
Private Sub Com_Måned_Change()
    If flag = True Then
       
        datoSkift
    End If
End Sub
Private Sub Com_År_Change()
    If flag = True Then
        datoSkift
    End If
End Sub
Private Sub datoSkift()
Dim nyDato As Date, d As Integer, sidsteDag As Integer
    antalDage = hentAntalDageMåned(Me.Com_År, Me.Com_Måned.ListIndex)
   
    nyDato = Me.Com_Dag & "-" & Me.Com_Måned.ListIndex + 1 & "-" & Me.Com_År

    sidsteDag = Me.Com_Dag.ListCount
    If sidsteDag > antalDage Then
        While Me.Com_Dag.ListCount > antalDage
            Me.Com_Dag.RemoveItem (Me.Com_Dag.ListCount) - 1
        Wend
    Else
        If sidsteDag < antalDage Then
            While Me.Com_Dag.ListCount < antalDage
                sidsteDag = sidsteDag + 1
                Me.Com_Dag.AddItem sidsteDag
            Wend
        End If
    End If
   
    Me.Tb_ugeNr = beregnUgeNr(nyDato)
End Sub
Private Sub UserForm_Activate()
Dim i As Integer, antalDage As Integer
Rem Dette år + næste
    Me.Com_År.AddItem Year(Now) - 1
    Me.Com_År.AddItem Year(Now)
    Me.Com_År.AddItem Year(Now) + 1
    Me.Com_År.ListIndex = 1
   
Rem Måneder
    tabel = Split(måneder, ",")
    For i = 0 To UBound(tabel)
        Me.Com_Måned.AddItem tabel(i)
    Next i
    Me.Com_Måned.ListIndex = Month(Now) - 1
   
Rem Dage
    antalDage = hentAntalDageMåned(Year(Now), Month(Now) - 1)
    For i = 1 To antalDage
        Me.Com_Dag.AddItem i
    Next i
    Me.Com_Dag.ListIndex = Day(Now) - 1
   
Rem BeregnUgeNr
    ugeNr = beregnUgeNr(Now)
    Me.Tb_ugeNr = ugeNr
   
    tabel = Split(ugeDage, ",")
   
    flag = True
End Sub
Private Sub UserForm_Terminate()
    ThisWorkbook.findNyRække
End Sub
Private Function hentAntalDageMåned(år, md)
Const normDage = "31,28,31,30,31,30,31,31,30,31,30,31"
Dim mdDage As Variant
Dim xÅr As Integer, xMd As Integer, xMdDage As Byte
    mdDage = Split(normDage, ",")

    xÅr = år
    xMd = md
   
    If xMd + 1 = 2 Then
        If xÅr Mod 4 = 0 Then
            xMdDage = 29
        Else
            xMdDage = 28
        End If
    Else
        xMdDage = mdDage(xMd)
    End If

    hentAntalDageMåned = xMdDage
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
Public Function hentMånedsNavn(mdnr As Byte)
    hentMånedsNavn = mdLangtnavn(mdnr)
End Function
Avatar billede Marting Forsker
21. marts 2016 - 18:21 #12
Håber du har fået dine point?

: -)
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