05. januar 2018 - 22:08 Der er 15 kommentarer

Dynamisk gruppe af checkboxe

Hej,
Jeg vil lige starte med at sige at jeg på ingen måde er ekspert i Excel, så jeg håber at nogle vil hjælpe mig, og at de vil bære over med mig hvis jeg skulle virke “dum”.
Jeg er ved at lave et excelark til vores kunder hvor de kan få leveringspriser fra Vores lager til levering i DK, SE, FI, NO og FO.
Jeg kunne godt tænke mig at når kunden vælger levereingsland DK, så kommer der en gruppe “checkboxes” frem, hvor de kan sætte flueben i f.x. Tidsbestemt levering, liftlevering eller andet. Hvert flueben vil så udvikle en omkostning.
Når kunden så vælger leveringland SE, så skal der vise sig nogle “andre” checkboxe, som så har en anden værdi. Eksempelvis, fortoldning, ring før levering eller noget helt andet!

Er det muligt at lave gruppen af checkboxe dynamiske ud fra en bestemt celles værdi overhovedet?

Selve det at lave checkboxene har jeg styr på, også værdierne hvis der sættes flueben osv, så det er altså “blot” visningen af dem jeg bøvler med.

På forhånd tak for hjælpen.
Ghita
Avatar billede fbrejl Novice
06. januar 2018 - 04:40 #1
Hej Ghita.

En måde kunne være at benytte funktionen: skjul/vis kolonne eller række:

Først skal checkboxen formateres til at skjules, når cellen skjules:
1. Sikre dig at du har valgt Active-X object Checkbox fremfor Kontrolelement for formular checkbox.
2. Makér checkboxen vha. et simpelt højreklik
3. Klik på båndet: "Formatér"
4. Klik på "Se-mere"-pilen nederst til højre I Sektionen: "Størrelse" ude til højre I båndet
5. Udvid afsnittet: "Egenskaber"
6. Vælg: "flyt og juster størrelse sammen med celler"

Nu kan du så indsætte en Checkbox og programmere den til at skjule den kolonne eller den række som du har indsat ovenstående checkbox i.
1. Indsæt et nyt Active-X Object Checkbox, som skal bruges til at skjule/vise den kolonne/række, hvor den anden checkbox er.
2. Højreklik på Active-X Object Checkboxen og vælg "Vis programkode"
3. Indsæt følgende kode på linje 2, dvs mellem de to linjer, som der er i forvejen:
[C:C].EntireColumn.Hidden = Not CheckBox1
4. Luk programkoden-editoren (Alt+q)

I koden er den skarpe parentes angivelsen af hvilket kolonne interval, som skal være skjult/vist, når der klikkes. Dvs. i dette tilfælde blot kolonne C.
Hvis jeg havde skrevet [C:F], så havde det været kolonne C, D og F, som ville
være blevet skjult/vist. Hvis du ønsker at det i stedet skal være række, som skal skjules/vises, så indsæt denne kode i stedet:

[2:2]. EntireRow.Hidden = Not CheckBox1,

Den skjuler/viser, række 2.

Når du så vil prøve det, så husk at klikke på knappen: "Designtilstand", så den slås fra og du kan prøve ActiveX-objectet.

Dette kunne være løsningen, selvfølgelig afhængigt af hvordan dit excel-ark er bygget op.

Mange hilsener
Frederik
Avatar billede Jan Hansen Ekspert
06. januar 2018 - 08:03 #2
hej Ghita

Hvis du laver en OptionButton for hvert land så kan der kun være prik i en af dem!!

1. Navn giv dem OpDk, OpSe osv.
2. Navn giv dine Checkbox'e CbLevDk osv.
3. Set visible i dine Checkbox'e til False
4. Lav kode for dine OptionButton's, (CbLevDk.Visible=True)

Vubti bude være som ønsket

Jan
06. januar 2018 - 08:29 #3
Hej Jan, det lyder som en god løsning! I dag har jeg en Dropdown hvor kunden kan vælge land, så der kan også kun vælges ét land af gangen. Vil det ikke også kunne fungere tror du?
06. januar 2018 - 08:30 #4
Eller man kan måske ikke lave flere koder til én celle?
06. januar 2018 - 08:31 #5
Hej fbrejl , tak for ovenstående! En super god beskrivelse af hvordan det skal udføres. Vil prøve denne mulighed også!
Avatar billede Jan Hansen Ekspert
06. januar 2018 - 10:03 #6
Hej Ghita
den løsning jeg taler om kræver VBA, opfattede det som du bruger VBA nu, så???
Avatar billede Jan Hansen Ekspert
06. januar 2018 - 10:09 #7
Et spørgsmål mere er Chekboxene i cellerne eller ligger de oven på arket?

Opload evt en kopi til dropbox så vi kan se

Jan
07. januar 2018 - 19:03 #8
Hej Jan,
Jeg bruger VBA ja.
Checkboxene ligger “ovenpå”... ikke i celler. Jeg kommer til en computer snart, så vil jeg lege lidt med det igen og prøve løsningerne I er kommet med.
Avatar billede Jan Hansen Ekspert
07. januar 2018 - 20:27 #9
Lav evt en Frame for hvert land med checkboxene i så kan du bruge visible på Frame'n.

Ps frame's kan godt ligge på samme placering.

Jan
07. januar 2018 - 20:55 #10
Okay. Jeg skal prøve om jeg kan forklare mig lidt bedre.
Jeg har en celle (C16). Den er lavet som en Dropdown fra en liste med ordene “Danmark”, “Finland”, “Sverige” osv.
Så har jeg grupper af checkboxe, men jeg starter bare med én. Denne checkbox giver jeg navnet “cblevdk” og planen er, at denne skal blive synlig , og derved “aktiv når man vælger leveringsland “Danmark”. Jeg har indstillet checkboxen til visible “False”.
Jeg laver da en “kode” på checkboxen. Denne hedder som følger...

Private sub worksheet_active()
If activesheet.range(“c16”).value = “Danmark” Then activesheet.checkbox(“cblevdk”).visible = true
End sub

Det virker IKKE som jeg har i hensigt. Kan nogen fortælle mig hvad jeg gør forkert?
På forhånd mange tsk
07. januar 2018 - 21:41 #11
Jeg har aldrig vidst “frames” fandtes!! Det er jo endnu bedre endnu!
Meeen hvordan skal koden skrives for at den vises og ikke vises? Det burde jo være den “samme” kode næsten, og den kan jeg jo tydeligvis ikke få til at virke.
Avatar billede Jan Hansen Ekspert
08. januar 2018 - 15:05 #12
prøver lige at lave et eksempel vent
Avatar billede Jan Hansen Ekspert
08. januar 2018 - 16:39 #13
Har lige arbejdet lidt med det og det er lidt langhåret
1. man skal oprette Groupbox for hvert land og der efter Checkbokse (alt i en Macro)
2. Når arket aktiveres skal Groupbox'ene læses ind i et array så C16 kan bestemme hvilken Groupbox der er synlig.

hvis du alene vil bruge Checkbox'e skal du ligeledes have dem læst ind i et array så C16 kan bestemme hvilke der skal være synlige

Hvis du vil have hjælp over Teamwiver så skriv en privat besked!!

Jan
Avatar billede Jan Hansen Ekspert
08. januar 2018 - 16:57 #14
måske kan noget i denne retning virke

Private Sub Worksheet_Change(ByVal Target As Range)
    select case range("C16").Value
        Case "Danmark"
            CheckBox1.Visible = True
            CheckBox2.Visible = False
        Case "Norge"
            CheckBox1.Visible = False
            CheckBox2.Visible = True
        Else Case
            CheckBox1.Visible = False
            CheckBox2.Visible = False
  End select
End Sub
08. januar 2018 - 20:01 #15
Hej Jan
Med din hjælp gav jeg mig i kast med “frames” det har jeg fået til at virke med en enkelt om ikke andet. Nu ville jeg så prøve at tolke et Par flere frames, og så tilføje nogle flere “IF” formler i VBA, men nu virker ikke en gang den FØRSTE mere! Det har virket hele dagen på mit arbejde, men nu da jeg kommer hjem, så virker det pludselig ikke mere! Jeg arbejder i to forskellige Excel udgaver, kan det gøre en forskel? Umiddelbart skal det jo virke i alle udgaver, da jeg jo ikke ved hvor iopdsteret en version mine kunder har!!
Jeg bruge nedenstående kode og fik det til at virke.

Code:
Private Sub Worksheet_Calculate()
If Range(“H29”).Value = 1 Then
Me.Shapes(“Frame1”).Visible = True
Else
Me.Shapes(“Frame1”).Visible = False
End If
End Sub

Har du en god grund til at den så pludselig ikke virker mere?
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

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