Avatar billede janvogt Praktikant
14. november 2000 - 16:08 Der er 5 kommentarer og
1 løsning

Checkbox i Excel

I en userform har jeg oprettet en checkbox, som kører en makro, som skjuler/viser 3 kolonner i mit regneark når den vælges/fravælges.
Mit problem er, at jeg ikke kan få min userform til at \'huske\' værdien af checkboxen til næste gang den åbnes.
Hvordan skal koden være?
Avatar billede buhl Nybegynder
14. november 2000 - 22:31 #1
Prøv følgende:

Option Explicit

Sub LoadSettings(ByRef Column1IsVisible As Boolean, ByRef Column2IsVisible As Boolean, ByRef Column3IsVisible As Boolean)
   
    Column1IsVisible = GetSetting(Application.Name, \"HideColumns\", \"Column1\", True)
    Column2IsVisible = GetSetting(Application.Name, \"HideColumns\", \"Column2\", True)
    Column3IsVisible = GetSetting(Application.Name, \"HideColumns\", \"Column3\", True)

End Sub

Sub SaveSettings(ByVal Column1IsVisible As Boolean, ByVal Column2IsVisible As Boolean, ByVal Column3IsVisible As Boolean)

    Call SaveSetting(Application.Name, \"HideColumns\", \"Column1\", Column1IsVisible)
    Call SaveSetting(Application.Name, \"HideColumns\", \"Column2\", Column2IsVisible)
    Call SaveSetting(Application.Name, \"HideColumns\", \"Column3\", Column3IsVisible)

End Sub

Sub Test()

    \' gem settings
    Call SaveSettings(True, False, False)

    Dim bShowColumn1 As Boolean
    Dim bShowColumn2 As Boolean
    Dim bShowColumn3 As Boolean
   
    \' restore settings
    Call LoadSettings(bShowColumn1, bShowColumn2, bShowColumn3)
   
    Debug.Print bShowColumn1
    Debug.Print bShowColumn2
    Debug.Print bShowColumn3

End Sub

Ovenstående benytter registry\'n som lagringsmedie. En anden klassisk Excel-teknik er at gemme settings og lign. i et skjult sheet for brugerne.

:) Buhl
Avatar billede janvogt Praktikant
15. november 2000 - 10:33 #2
Det bliver lidt for kompliceret for mig. Det må kunne gøres nemmere. Jeg prøver at uddybe:

Den Excel-macro, som skjuler de tre kolonner hedder Skjul_BCD og den makro som viser dem igen hedder Vis_BCD.

Checkboxen fungerer altså således:

Private Sub CheckBox1_Click()
If CheckBox1.Value = True Then
    Skjul_BCD
Else
    Vis_BCD
End If
End Sub

Mit problem er, at CheckBox1.value får defaultværdien \"TRUE\" hver gang Userform1 aktiveres. Jeg har derfor behov for at få CheckBox1.value gemt hver gang jeg afslutter Userform1. Dette skal vel ske i nedenstående Sub:

Private Sub CommandButton1_Click()
    Unload UserForm1
End Sub

Denne værdi skal så \'restores\' når Userform1 aktiveres. Dette sker i:
Private Sub UserForm_Initialize()

Jeg er temmelig \'grøn\' i VB so \'Keep it simple\'.

Hvorvidt der skal bruges SaveSetting/LoadSetting eller settings skal gemmes i et skjult ark er ligegyldigt - bare det virker!
Avatar billede janvogt Praktikant
15. november 2000 - 11:30 #3
Jeg fandt selv ud af det - tænkte nok det var simpelt.
Løsning: I stedet for at bruge Unload Userform1 skal der bruges Userform1.Hide.
Derved \'gemmes\' alle settings i userformen.

Jeg vil egentlig gerne give lidt point for bestræbelserne, men nogen gemmer jeg til en anden gang. Hvordan gør man det?
Avatar billede buhl Nybegynder
15. november 2000 - 20:58 #4
Lige for at runde af. Den løsnings jeg skitserede husker hide/show settings *hver gang* du åbner regnearket. En Hide i stedet for Unload husker kun sålænge regnearket er åbent. Dvs. næste gang du åbner arket vil du være nødsaget til at genetablere disse settings. Dette er selvfølgelig ikke det store problem i dit tilfælde med 3 settings, men i andre tilfælde vil brugeren kunne blive irriteret over at arket ikke automatisk husker dette.

:) Buhl
Avatar billede janvogt Praktikant
16. november 2000 - 13:22 #5
Det har du ret i, men i ovenstående situation er det tilstrækkeligt blot at skjule boxen.

Userformen bruges, udover ovenstående makroer, til forskellige visninger samt udskrifter, så det er ok at der vises default-værdier første gang efter at filen er åbnet.

Filen skal bruges af flere brugere, så det ville faktisk være irriterende at starte op med en anden brugers settings.
Avatar billede buhl Nybegynder
17. november 2000 - 22:51 #6
Endnu en lille afrundingskommentar.
Disse settings følger brugerens login-profil, så de enkelte brugere ville ikke opleve at der var en forskel fra PC til PC.



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