Avatar billede dennisa Nybegynder
26. august 2011 - 09:24 Der er 18 kommentarer

Lokal brugermenu

Jeg har behov for en form for menu hvorfra brogeren kan vælge en værdi der skal indsættes i et felt i et regneark, hvorefter regnearket reagerer/beregner som følge af dette valg.

Menu skal indeholde data som kan hentes fra et nærmere angivet celleområde.

Hvordan gøres det ?
26. august 2011 - 09:27 #1
Den mest fleksible metode er en userform - det kræver lidt vba kompetence...

http://www.it-fjernundervisning.dk/Excel_VBA/VBA_Userforms/Forms.aspx
26. august 2011 - 09:27 #2
Alternativt kan du bruge validerings muligheden i Excel

http://www.contextures.com/xldataval01.html
Avatar billede dennisa Nybegynder
26. august 2011 - 09:34 #3
Hej Thor

En metode hvor der skal skiftes til en userform for at skifte resultat er ikke det jeg søger. Princippielt er det lidt i samme stil jeg allerede har, hvor formålet med menupunktet er at give brugeren mulighed for at lave input via en form for lokalmenu i toppen
26. august 2011 - 09:39 #4
Øh - nu er jeg ikke klar over hvad du allerede har...

Ud over valideringsfunktioner kan du også kaste dig ud i at bruge kontroller.

http://faculty.fuqua.duke.edu/~pecklund/ExcelReview/2001_Documents/WorksheetControls.pdf
Avatar billede dennisa Nybegynder
26. august 2011 - 09:45 #5
Den er jeg med på, men jeg ønsker at en eventuel liste er synlig hele tiden og kan bruges sanset hvilket ark brugere står i, derfor mest nensigtsmæssigt i menulinien, og ikke i form af en dropdowl/listbox på selve arket
26. august 2011 - 09:49 #6
Hvilken version af Excel bruger du?
Avatar billede dennisa Nybegynder
26. august 2011 - 10:05 #7
Office 2003
26. august 2011 - 10:12 #8
Ok - hvor langt er I fra en opgradering til 2007 eller 2010?
Sagen er den, at den menu du kender i 2003 forsvinder i 2007/2010 og  tilsvarende vil tilretninger i menuen skulle laves på en helt anden måde i 2007/2010.
Avatar billede dennisa Nybegynder
26. august 2011 - 10:18 #9
Godt spørgsmål !

Med mit kendskab til vore brugere, håber jeg at det langt ud i fremtiden da layout og metoder er meget forkellige fra det de er vant til, men tak for advarslen :-)
26. august 2011 - 10:33 #10
Ok - så må du lige fortælle lidt mere om hvad du drømmer om sådan en menu skal gøre. Gerne med et lille eksempel.
Avatar billede dennisa Nybegynder
26. august 2011 - 10:53 #11
Løsningen i dag er at jeg har 24 rapporter fordelt på 12 arkfaner. Alle 24 rapporter er i dag afhængig af nogle standardinput som brugeren skan sætte i det første ark.

Det der derfor lidt bøvlet i dag, hvis brugeren så i arkfane 5 finder ud af at han gerne vil skifte input og skal skifte til arkfane 1 og tilbage til arkfane 5 for at se ændringen.

Derfor vil jeg gerne at disse standardinput flyttes op i menulinien så bruger ikke behøver at skifte mellem arkfanerne unødvendigt
26. august 2011 - 10:56 #12
Jeg er ikke så kvik - kan du ikke konkretisere med et lille eksempel?
Avatar billede supertekst Ekspert
26. august 2011 - 11:37 #13
Forslag:

En userform kan vises i øverste venstre hjørne, når filen åbnes.
Skift af faneblad påvirker ikke userformen.
Der kan arbejdes i et ark, selvom userformen er åben.
Avatar billede store-morten Ekspert
26. august 2011 - 22:31 #14
Lidt at lege med.

1. Opretter en Menu "Dennisas_Menu" til venstre for "Hjælp"
2. Ved hjælp af "Dennisas_Menu" indsæt standardværdi 10 i Ark1 celle A1
2. Ved hjælp af "Dennisas_Menu" indsæt standardværdi 20 i Ark1 celle A2
3. Ved hjælp af "Dennisas_Menu" indtast værdi i Ark1 celle A1
4. Ved hjælp af "Dennisas_Menu" indtast værdi i Ark1 celle A2
5. Ved hjælp af "Dennisas_Menu" indsæt standardværdi  fra Ark3 celle A1 i active celle

Indsættes i et modul:
Option Explicit

Sub Auto_Open()
'  Creates a new menu and adds menu items
    Dim Cap(1 To 5)
    Dim Mac(1 To 5)
    Dim MenuName As String
   
    MenuName = "&Dennisas_Menu"
   
    Cap(1) = "Celle Ark1 A1 =10"
    Mac(1) = "mac1"
    Cap(2) = "Celle Ark1 A2 =20"
    Mac(2) = "mac2"
    Cap(3) = "Celle Ark1 A1 input"
    Mac(3) = "mac3"
    Cap(4) = "Celle Ark1 A2 input"
    Mac(4) = "mac4"
    Cap(5) = "Active celle = Ark3 celle A1"
    Mac(5) = "mac5"
   
    On Error Resume Next
'  Delete the menu if it already exists
    MenuBars(xlWorksheet).Menus(MenuName).Delete
   
'  Add the menu
    MenuBars(xlWorksheet).Menus.Add Caption:=MenuName, before:="Help"
   
'  Add the menu items
    With MenuBars(xlWorksheet).Menus(MenuName).MenuItems
   
        .Add Caption:=Cap(1), OnAction:=Mac(1)
        .Add Caption:=Cap(2), OnAction:=Mac(2)
        .Add Caption:="-"
        .Add Caption:=Cap(3), OnAction:=Mac(3)
        .Add Caption:=Cap(4), OnAction:=Mac(4)
        .Add Caption:="-"
        .Add Caption:=Cap(5), OnAction:=Mac(5)
       
    End With
End Sub

Sub Auto_Close()
    Dim MenuName As String
    MenuName = "&Min_Menu"
'  Delete the menu before closing
    On Error Resume Next
    MenuBars(xlWorksheet).Menus(MenuName).Delete
End Sub

Sub mac1()
Sheets(1).Range("A1").Value = 10
MsgBox "Test A1 er nu =10"
End Sub

Sub mac2()
Sheets(1).Range("A2").Value = 20
MsgBox "Test A2 er nu =20"
End Sub
Sub mac3()
    Dim Svar As String
    Svar = InputBox("Ændre A1 =" & Sheets(1).Range("A1") & " til værdi?")
    Sheets(1).Range("A1").Value = Svar
    MsgBox "Test A1 er nu = " & Svar & "."
End Sub

Sub mac4()
    Dim Svar As String
    Svar = InputBox("Ændre A2 =" & Sheets(1).Range("A2") & " til værdi?")
    MsgBox "Test A2 er nu = " & Svar & "."
    Sheets(1).Range("A2").Value = Svar
End Sub

Sub mac5()
ActiveCell.Value = Sheets(3).Range("A1").Value
End Sub

Hvis der bruges excel 2010
Opretters Menuen "Dennisas_Menu" på fanebladet "Tilføjelsesprogrammer"
Avatar billede store-morten Ekspert
27. august 2011 - 21:21 #15
Rettelse:

i linie 7 står der: MenuName = "&Dennisas_Menu"
i linie 36 står der: MenuName = "&Min_Menu"

Skal være ens.
Avatar billede store-morten Ekspert
28. august 2011 - 13:05 #16
Lidt at lege med, udvidet.

Excel 2003
standardinput: Ark3 celle A1:B2

1. Opretter en Menu "Dennisas_Menu" til venstre for "Hjælp"
Ved hjælp af "Dennisas_Menu"
2. indsæt standardværdi fra Ark3 celle A1 i Ark1 celle A1
    Mulighed for at vælge Ok eller Annuller
3. indsæt standardværdi fra Ark3 celle A2 i Ark1 celle A1
4. indsæt standardværdi fra Ark3 celle B1 i Ark1 celle A2
5. indsæt standardværdi fra Ark3 celle B2 i Ark1 celle A2
6. indtast værdi i Ark1 celle A1
7. indtast værdi i Ark1 celle A2
8. indsæt standardværdi fra Ark3 celle A1 i active celle
    Mulighed for at vælge Ok eller Annuller

Indsættes i et modul:
Option Explicit

Sub Auto_Open()
'  Creates a new menu and adds menu items
    Dim Cap(1 To 7)
    Dim Mac(1 To 7)
    Dim MenuName As String
   
    MenuName = "&Dennisas_Menu"
   
    Cap(1) = "Indsæt værdien " & Sheets(3).Range("A1") & " i celle A1"
    Mac(1) = "mac1"
    Cap(2) = "Indsæt værdien " & Sheets(3).Range("A2") & " i celle A1"
    Mac(2) = "mac2"
    Cap(3) = "Indsæt værdien " & Sheets(3).Range("B1") & " i celle A2"
    Mac(3) = "mac3"
    Cap(4) = "Indsæt værdien " & Sheets(3).Range("B2") & " i celle A2"
    Mac(4) = "mac4"
    Cap(5) = "Celle Ark1 A1 input"
    Mac(5) = "mac5"
    Cap(6) = "Celle Ark1 A2 input"
    Mac(6) = "mac6"
    Cap(7) = "Active celle = Ark3 celle A1: " & Sheets(3).Range("A1")
    Mac(7) = "mac7"
   
    On Error Resume Next
'  Delete the menu if it already exists
    MenuBars(xlWorksheet).Menus(MenuName).Delete
   
'  Add the menu
    MenuBars(xlWorksheet).Menus.Add Caption:=MenuName, before:="Help"
   
'  Add the menu items
    With MenuBars(xlWorksheet).Menus(MenuName).MenuItems
   
        .Add Caption:=Cap(1), OnAction:=Mac(1)
        .Add Caption:=Cap(2), OnAction:=Mac(2)
        .Add Caption:="-"
        .Add Caption:=Cap(3), OnAction:=Mac(3)
        .Add Caption:=Cap(4), OnAction:=Mac(4)
        .Add Caption:="-"
        .Add Caption:=Cap(5), OnAction:=Mac(5)
        .Add Caption:=Cap(6), OnAction:=Mac(6)
        .Add Caption:="-"
        .Add Caption:=Cap(7), OnAction:=Mac(7)
       
    End With
End Sub

Sub Auto_Close()
    Dim MenuName As String
    MenuName = "&Dennisas_Menu"
'  Delete the menu before closing
    On Error Resume Next
    MenuBars(xlWorksheet).Menus(MenuName).Delete
End Sub

Sub mac1()
Dim Før
Dim Svar As Integer
Før = Sheets(1).Range("A1").Value

Sheets(1).Range("A1").Value = Sheets(3).Range("A1")
Svar = MsgBox("Du er ved at ændret A1" & vbCrLf & _
"fra:" & vbTab & Før & vbCrLf & _
"til:" & vbTab & Sheets(3).Range("A1"), vbOKCancel, "Advarsel...")

If Svar = vbCancel Then    ' User chose Cancel.
Sheets(1).Range("A1").Value = Før
ElseIf Svar = vbOK Then    ' User chose OK.
Exit Sub
End If
End Sub

Sub mac2()
Sheets(1).Range("A1").Value = Sheets(3).Range("A2")
MsgBox "A1 er nu =" & Sheets(3).Range("A2")
End Sub

Sub mac3()
Sheets(1).Range("A2").Value = Sheets(3).Range("B1")
MsgBox "A2 er nu =" & Sheets(3).Range("B1")
End Sub

Sub mac4()
Sheets(1).Range("A2").Value = Sheets(3).Range("B2")
MsgBox "A2 er nu =" & Sheets(3).Range("B2")
End Sub

Sub mac5()
    Dim Svar As String
    Svar = InputBox("Ændre A1 =" & Sheets(1).Range("A1") & " til værdi?")
    Sheets(1).Range("A1").Value = Svar
    MsgBox "A1 er nu = " & Svar & "."
End Sub

Sub mac6()
    Dim Svar As String
    Svar = InputBox("Ændre A2 =" & Sheets(1).Range("A2") & " til værdi?")
    MsgBox "A2 er nu = " & Svar & "."
    Sheets(1).Range("A2").Value = Svar
End Sub

Sub mac7()
Dim Før
Dim Svar As Integer
Før = ActiveCell.Value

ActiveCell.Value = Sheets(3).Range("A1").Value
Svar = MsgBox("Du er ved at ændret den active celle" & vbCrLf & _
"fra:" & vbTab & Før & vbCrLf & _
"til:" & vbTab & Sheets(3).Range("A1"), vbOKCancel, "Advarsel...")

If Svar = vbCancel Then    ' User chose Cancel.
ActiveCell.Value = Før
ElseIf Svar = vbOK Then    ' User chose OK.
Exit Sub
End If
End Sub

Evt. tilføjes denne kode på Ark3:
Private Sub Worksheet_Change(ByVal Target As Range)
      If Not Intersect(Range("A1:B2"), Target) Is Nothing Then
        Auto_Open
    End If
End Sub

Så opdateres Menu'en når der ændres i standardinput: Ark3 celle A1:B2
Avatar billede store-morten Ekspert
31. august 2011 - 16:14 #17
Respons ønskes ;-)

Har en kode mere "SmartMenu"
Hvis det har interesse?
Avatar billede store-morten Ekspert
13. oktober 2011 - 19:01 #18
Respons ønskes ;-)
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
Vi har et stort udvalg af Excel kurser. Find lige det kursus der passer dig lige her.

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