Avatar billede casperl Nybegynder
10. juli 2005 - 17:22 Der er 21 kommentarer og
1 løsning

Drop-down menu i excel

Hej eksperter,

Jeg håber der er nogle der kan hjælpe mig med en forenkling af et excelark.

Jeg sidder og laver investeringskalkuler i excel, og jeg ønsker da at lave en drop-menu hvor man kan vælge renten i stedet for at taste den, og at den valgte rente i denne menu stadig bliver et parameter og ikke bare en skønhedsting uden funktion.

Er dette muligt?

Jeg ønsker ligeledes at en lignende drop-down menu som ikke har nogle matematisk funktion, man skal kunne vælge mellem: maksimering/minimering, så man ikke skal ændre manuelt hver gang.

Er dette muligt?

På forhånd tak.

Casper
Avatar billede casperl Nybegynder
10. juli 2005 - 17:29 #1
Jeg fandt det netop i datavalidering, men hvis man skal lave arket for brugere der er ukendte med funktionen er der jo den fare at man ikke kan se der er en drop-down med mindre man har musen over cellen, kan man gøre noget ved dette ?
Avatar billede tvc Seniormester
10. juli 2005 - 17:31 #2
Hej Casper

Du kan lave det ved hjælp af en liste i datavalideringen.

[Data] [Datavalidering]

Under Tillad: Vælger du liste

I Kilde: vælger du det område dine %'er står i eller du skriver 4%;5%;6% osv.

TVC
Avatar billede tvc Seniormester
10. juli 2005 - 17:32 #3
Desværre kan man ikke få Excel til at vise listefunktionen visuelt, der er du nødt til at ændre cellefarve og evt. ramme så den kommer til at ligne en Drop-down menu

TVC
Avatar billede tvc Seniormester
10. juli 2005 - 17:36 #4
Hvis du vil sikre at brugeren kan se meningen med din Drop-down. Skal du blot anvende funktionen under Formularer.

TVC
Avatar billede casperl Nybegynder
10. juli 2005 - 17:37 #5
Tak skal du have.

Ved du så tilfældigvis svaret på følgende tillægsspørgsmål.

Jeg har 3 mulige tekster man kan vælge i en menu: Indtjening;Besparelse;Indtjening & Besparelse.

Den sidste altså "indtjening & besparelse" fylder for meget, hvordan tvinger man teksten til at dele sig over 2 rækker når der er plads til dette?

Casper
Avatar billede casperl Nybegynder
10. juli 2005 - 17:38 #6
Man kan åbenbart ikke opbryde teskter i dropdown
Avatar billede casperl Nybegynder
10. juli 2005 - 17:39 #7
"Funktionen under Formularer" kan du lige give en kort notits til hvor jeg finder det?
Avatar billede tvc Seniormester
10. juli 2005 - 17:40 #8
Vælg eksempelvis en Kombinationsboks. Højreklik på kontrolelementet og vælg Formater kontrolelement.

Under fanen kontrolelement vælger du Inputområde (det område dine procenter står i), cellekæde er den celle du vil have resultatet af den valgte procent vist i (4%, 5%, 6& - vises som 1, 2, 3 - 1 vises for førete post i din kombinationsboks, 2 for den anden osv.)

TVC
Avatar billede tvc Seniormester
10. juli 2005 - 17:42 #9
Du finder menuen Formularer ved at vælge Vis - Værktøjslinjer - så vælge Formularer.
Avatar billede casperl Nybegynder
10. juli 2005 - 17:57 #10
men jeg vil jo have opbrudt teksten "besparelse & indtjening" til at stå på 2 rækker selvom der er tale om en kommando.

dvs

Besparelse %
indtjening

i stedet for

Besparelse & indtjening

drop down menuen, inden holder altså 3 muligheder:

Indtjening
Besparelse
Besparelse & Indtjening

det er kun den sidste jeg ønsker opbrudt.

Tror faktisk ikke det er muligt
Avatar billede tvc Seniormester
10. juli 2005 - 18:53 #11
Nej det er ikke muligt at opbryde tekst i en valgboks. Du bliver nødt til at gøre valgboksen (kombinationsboksen) så bred at teksten kan stå der.

TVC
Avatar billede casperl Nybegynder
10. juli 2005 - 19:47 #12
http://casperl.dk/eksinv.xls

Kan du ligge et svar og måske svare på sidste tillægsspørgsmål :-)

Kan man i "år" måske via en drop-down-menu vælge et antal år og så indsætter excel det antal rækker der ønskes. Det er jo underligt man kan tilpasse alt det andet men ikke kan lave noget automatisk vedr. antallet af år, det virker pudsigt hvis man skal indsætter rækker selv.

Casper
Avatar billede tvc Seniormester
11. juli 2005 - 12:30 #13
Der findes ikke en funktion i Excel til automatisk at indsætte rækker på baggrund af et valg i en funktionsboks.

Det du søger er et VBA skript som læser det valgte antal år og derefter indsætter et antal rækker. Jeg er selv først lige begyndt at interessere mig for VBA, så jeg vil skulle bruge uforholdsvis megen tid for at lave et sådan scrift til dig. Jeg ved at kabbak og bak her på siden vil kunne hjælpe dig med en sådan løsning, da det er barnemad for de to :-)

Du skal huske når du skriver dit ny VBA spørgsmål at beskrive alt hvad du vil have programmet til at kunne. Eksempelvis skal VBA'en også kunne slette rækker hvis du vælger et mindre antal år en tidligere og dine formler skal jo også automatisk indsættes i den ny række.

Men som sagt så prøv at spørge en af VBA eksperterne.

Hilsen

TVC
Avatar billede tvc Seniormester
11. juli 2005 - 13:57 #14
Hej Casper

Jeg kastede mig alligevel over din udfordring :-)

Den er ganske vist ikke færdig endnu, da den mangler slette funktionen som kommer lidt senere.

Du skal navngive en celle i dit ark Aar - denne referere til det antal år modellen skal anvende. Ved siden af cellen indsætter du en knap fra menuen Formularer og tilfører følgende VBA til knappen.


Sub AntalAar()

    Dim Aar As Integer
    Dim I As Integer
    Dim Pos As Range
    Dim SlutR As Range

    Aar = Range("aar").Value
    I = 1
    PosR = 14
    PosC = 2
 
   
   
   
    For I = 1 To Aar
         
    ActiveSheet.Cells(PosR, PosC).Select
     

    ActiveCell.Offset(1, 0).Select
    Selection.EntireRow.Insert
    ActiveCell = ActiveCell.Offset(-1, 0).Value + 1

   
    ActiveCell.Offset(0, 3).Select
    ActiveCell.FormulaR1C1 = "=INDIRECT(""C""&ROW())+INDIRECT(""D""&ROW())"
   
    ActiveCell.Offset(0, 1).Select
    ActiveCell.FormulaR1C1 = "=(1+(R10C7/100))^-INDIRECT(""B""&ROW())"
   
    ActiveCell.Offset(0, 1).Select
    ActiveCell.FormulaR1C1 = "=INDIRECT(""E""&ROW())*INDIRECT(""F""&ROW())"
   
    PosR = PosR + 1
   
    Next I
       
    End Sub

Den resterende del af koden kommer lidt senere :-)


TVC
Avatar billede tvc Seniormester
11. juli 2005 - 15:44 #15
Hej Casper

Her får du så den endelige løsning, det har taget tid men var en god udfordring her ved mine spæde trin i VBA-verdenen :-)

Indsæt nedenstående VBA i et Modul (der hvor dine makroer også ligger).

Sub AntalAar()

    Dim Aar As Integer
    Dim I As Integer
    Dim PosR As Integer
    Dim PosC As Integer
    Dim SlutR As Integer
   
    'Indgangsværdier for variabler
    Aar = Range("aar").Value
    I = 1
    PosR = 14
    PosC = 2
    SlutR = Range("slut").Row - 1
   
     
    'Klargøring af område - sletter alle tidligere år_rækker
    Rows("15" & ":" & SlutR).Select
    Selection.Delete Shift:=xlUp
    Range("B15").Select
         
       
    'Indsætter antal år og funktioner i cellerne fra år 1 til det ønskede antal
    For I = 1 To Aar
         
    ActiveSheet.Cells(PosR, PosC).Select
     

    ActiveCell.Offset(1, 0).Select
    Selection.EntireRow.Insert
    ActiveCell = ActiveCell.Offset(-1, 0).Value + 1

   
    ActiveCell.Offset(0, 3).Select
    ActiveCell.FormulaR1C1 = "=INDIRECT(""C""&ROW())+INDIRECT(""D""&ROW())"
   
    ActiveCell.Offset(0, 1).Select
    ActiveCell.FormulaR1C1 = "=(1+(R10C7/100))^-INDIRECT(""B""&ROW())"
   
    ActiveCell.Offset(0, 1).Select
    ActiveCell.FormulaR1C1 = "=INDIRECT(""E""&ROW())*INDIRECT(""F""&ROW())"
   
    PosR = PosR + 1
   
    Next I
       
    End Sub



- Vælg en celle, til brug for angivelse af antal år, og navngiv den "Aar".

- Marker hele din række 25 (den tomme række mellem dit resultat og det sidste år i beregningen) og navngiv den "slut".

- Indsæt en knap (fra menuen Formularer) og højreklik på knappen og vælg Tildel makro - vælg den ny makro "AntalAar".

Nu skulle din funktion virke ellers må jeg sende dig arket.

TVC
Avatar billede tvc Seniormester
11. juli 2005 - 15:52 #16
Hej Casper

Jeg kan se at dine summer i bunden skal udvides for at kunne håndtere sletning og indsætning af rækker.

I dit fremsendte eksempel skal din som gå fra række 14 til 25. Herefter skulle summerne selv tilpasse sig området.

TVC
Avatar billede tvc Seniormester
11. juli 2005 - 16:09 #17
Hej Casper

Ved min test fandt jeg en lille fejl. Hvis brugeren indtaster 0 i antal år ville den tidligere version af VBA'en slette formeget af arket.

Du skal derfor bruge denne kode, hvor jeg også tester på om det indtastede antal år er over 0:

__________________________________________________________________________

Sub AntalAar()

    Dim Aar As Integer
    Dim I As Integer
    Dim PosR As Integer
    Dim PosC As Integer
    Dim SlutR As Integer
   
    Aar = Range("aar").Value
    I = 1
    PosR = 14
    PosC = 2
    SlutR = Range("slut").Row - 1
   
     
    If Aar > 0 Then
               
            Rows("15" & ":" & SlutR).Select
            Selection.Delete Shift:=xlUp
            Range("B15").Select
             
        For I = 1 To Aar
         
            ActiveSheet.Cells(PosR, PosC).Select
     

            ActiveCell.Offset(1, 0).Select
            Selection.EntireRow.Insert
            ActiveCell = ActiveCell.Offset(-1, 0).Value + 1

   
            ActiveCell.Offset(0, 3).Select
            ActiveCell.FormulaR1C1 = "=INDIRECT(""C""&ROW())+INDIRECT(""D""&ROW())"
   
            ActiveCell.Offset(0, 1).Select
            ActiveCell.FormulaR1C1 = "=(1+(R10C7/100))^-INDIRECT(""B""&ROW())"
   
            ActiveCell.Offset(0, 1).Select
            ActiveCell.FormulaR1C1 = "=INDIRECT(""E""&ROW())*INDIRECT(""F""&ROW())"
   
            PosR = PosR + 1
   
        Next I
   
    Else
        MsgBox "Antal år skal være større end 0"
        Range("Aar").Select
        Range("Aar").Value = 1
   
    End If
       
    End Sub

______________________________________________________________________
Avatar billede casperl Nybegynder
11. juli 2005 - 17:05 #18
du må meget gerne sende arket til cl@casperl.dk , så vil jeg straks gå ind og se hvordan du har gjort at fluks løbe på biblioteket efter VBA bøger :-)

Tak for hjælpen
Avatar billede casperl Nybegynder
11. juli 2005 - 18:55 #19
tilsyneladende går der ged i summen
Avatar billede casperl Nybegynder
11. juli 2005 - 19:02 #20
Jeg har løst sumproblemet :-)
Avatar billede tvc Seniormester
11. juli 2005 - 19:54 #21
Hej Casper

Filen er sendt!

Hilsen

TVC
Avatar billede tvc Seniormester
11. juli 2005 - 19:58 #22
Kan i øvrigt på det varmeste anbefale bogen:

Excel 2003 programmering med VBA af Sharon Podlin - forlaget Libris.

TVC
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
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

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