code voor calendar in frm

Status
Niet open voor verdere reacties.

bowlingman

Gebruiker
Lid geworden
17 okt 2007
Berichten
433
Hallo,
Het seizoen zit erop en heb ik nu tijd om het één en ander ineen te steken in excel voor het nieuwe seizoen.
Ik heb nu een frm gemaakt, waarop de nodige besturingselementen gaan komen.
Met de volgende code, wordt het frm in volledige schermgrootte weergegeven alsook moeten de besturingselementen in de juiste schermresolutie getoond worden (kwestie van het oog wil ook wat)
Code:
Option Explicit

Private Sub UserForm_Initialize()
    Dim SchermMaten As New CScreenRes 'verwijzing naar Klassenmodule
    Dim iControls As Integer          'Aantal besturingselementen
    
    ' hiermee wordt het frm getoond in volledig scherm
    ' door te vermenigvuldigen met 3/4 krijg je op elk beeldscherm een schermvullend frm
    Me.Width = SchermMaten.SchermBreedte * 3 / 4
    Me.Height = SchermMaten.SchermHoogte * 3 / 4
    
    ' aanpassen van de besturingselementen
    With Me
        For iControls = 0 To .Controls.Count - 1
            With .Controls(iControls)
                .Top = .Top * SchermMaten.SchermHoogte / 768
                .Height = .Height * SchermMaten.SchermHoogte / 768
                .Left = .Left * SchermMaten.SchermBreedte / 1024
                .Width = .Width * SchermMaten.SchermBreedte / 1024
                .Font.Size = Int(.Font.Size * SchermMaten.SchermHoogte / 768)
            End With
        Next
    End With
End Sub
Tot hiertoe werkt alles goed (tenminste voor de labels die al op het frm staan)
Maar wanneer ik nu een "calendar" op het frm zet krijg ik de foutmelding
"eigenschap wordt niet ondersteund door dit object"
Wat moet ik hiervoor in bovenstaande code daar nog voor toevoegen.

Grtjs.
Armand
 
En welke eigenschap is dat? Heb je al geprobeerd 'm te omzeilen met On Error Resume Next?
 
Door simpel te debuggen kom je erachter welke eigenschap niet door het calendar object wordt ondersteund.
Je moet dus niks toevoegen maar kennelijk iets achterwege laten.
Zelf heb ik een hekel aan On Error Resume Next.
Je kunt er beter proberen achter te komen wat de oorzaak van het probleem is en dit dan op een nette manier oplossen.
Gebruik dat alleen als er geen andere mogelijkheid is en je weet waar je mee bezig bent op dat punt.
Documenteer het wel goed.
 
Laatst bewerkt:
Hallo edmoor,

Blijkbaar heeft het te maken met de code voor het aanpassen van de besturingselementen.
Wanneer ik deze uitschakel (met er even een enkele quote voor te zetten) dan wordt het frm gewoon geladen, maar staan uiteraard de labels niet netjes op zijn plaats.
Verwijder ik de calendar zelf en activeer terug de code dan wordt het frm geladen en staan de reeds gebruikte labels netjes op zijn plaats.

@OctaFish
On Error Resume Next helpt ook niet. Dan kan ik zelfs de knop waarmee het frm wordt geladen niet gebruiken.
 
Ja, dat was al duidelijk meer je kunt het beste in debug mode even kijken welke regel binnen With .Controls(iControls) door het kalender object niet wordt geaccepteerd.
Ik gok op .Font.Size
 
Laatst bewerkt:
Hallo edmoor,

Ik heb door uw gok, ".font.size" uitgeschakeld en dat werkt.
Maar ik krijg nergens eens melding dat dit de fout was. Is dat normaal?

Het is nu wel zo dat het lettertype van de andere besturingselementen nu niet worden aangepast.
Kan ik dan eventueel in de code zetten dat enkel voor de calendar deze ".font.size" niet moet aangespast worden.

Grtjs.
Armand
 
Ja, dat is normaal. In eerste instantie kreeg je wel een fout maar niet eentje die precies aangaf wat er aan de hand was.
Nu moet je het dus zo programmeren dat die fontsize voor alle objecten behalve het calendar object wordt gezet.
Dit kun je doen door de typenames van de objecten te controleren.
 
Hallo edmoor,

Ik veronderstel dat ik dus de calendar apart moet declareren en vervolgens dezelfde code als voor de andere besturingselementen kan gebruiken, maar dan zonder de .font.size
Maar hoe doe ik dat dan

Grtjs.
Armand
 
Ik kan het even niet testen maar probeer dit eens:

Code:
For iControls = 0 To .Controls.Count - 1
    With .Controls(iControls)
        .Top = .Top * SchermMaten.SchermHoogte / 768
        .Height = .Height * SchermMaten.SchermHoogte / 768
        .Left = .Left * SchermMaten.SchermBreedte / 1024
        .Width = .Width * SchermMaten.SchermBreedte / 1024
        If Ucase(.Name) <> "CALENDAR1" Then
            .Font.Size = Int(.Font.Size * SchermMaten.SchermHoogte / 768)
        End If
    End With
Next

Waarbij je dan op de plek van CALENDAR1 de naam van je kalender object in hoofdletters invult.
 
Laatst bewerkt:
Hallo edmoor,

Bedankt voor je hulp, werkt perfect de laatste code-update die je gegeven hebt.
Kan nu weer een stapje verder brijen.

Grtjs.
Armand

PS : Ik zet ineens opgelost
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan