28. september 2006 - 22:08Der er
5 kommentarer og 1 løsning
Opret Modulkode med en makro
Nu tænker I nok ... nu rabler det for gamle Jensen, men seriøst ... kan det lade sig gøre.
Sagen er der, at jeg eksperimenterer med multi-genererering af rapportmodeller fra SAP i et Excel-baseret værktøj kaldet Business Explorer Analyzer.
Modellernes grundprincipper består i, at jeg via queries i SAP, får returneret en række data til Excel, som så efterfølgende allokeres ud i enkelt arkfaner hed hjælp af egenudviklede makroer ... årsagen hertil er, at det vil tage alt for lang tid at producere de samme data som enkeltrapportudtræk fra SAP.
Dette fungerer i og for sig udemærket, men navigeringen i arkfaner som kan være adskillige hundrede, er meget lidt brugervenlig, når disse kun er navngivet med et kundenummer. Navngivning men kundenummer er valgt, fordi konbinationen af kundenummer og navn ofte overstiger de 30 karakteret som er max i arkfanenavne ...
Her er det så spørgsmålet om man kan give brugerne en mere overskuelig oversigt og adgang til de enkelte arkfaner.
I andre sammenhænge, har jeg med helt benyttet Userforms og TreeWiev funktioner til opbygning af menustrukturer til aktivering af forskellige makrofunktioner ...
Den modulkode som reelt er ret simpel, ... kan den opbygges dynamisk via en makrofuktion ???
Nedenfor et lille udsnit/eksempel på den kode jeg vil opnå
Private Sub UserForm_Initialize() Dim nodX As Node TreeView1.CheckBoxes = False With TreeView1.Nodes .Clear
Set nodX = .Add(, , "10000", "Kunde A") Set nodX = .Add(, , "20000", "Kunde B") Set nodX = .Add(, , "30000", "Kunde C")
End With TreeView1.Style = tvwTreelinesPlusMinusText TreeView1.BorderStyle = ccFixedSingle TreeView1.Appearance = cc3D
End Sub
Private Sub TreeView1_DblClick()
If TreeView1.SelectedItem.Key = "10000" Then Sheets("10000").Select ElseIf TreeView1.SelectedItem.Key = "20000" Then Sheets("20000").Select ElseIf TreeView1.SelectedItem.Key = "30000" Then Sheets("30000").Select
Else
End If
End Sub
Er det for ambitiøst et projekt, er det overhovedet lade sig gørligt eller har I et bedre forslag ????
Range("A1:i1").Select With Selection .HorizontalAlignment = xlCenter End With Selection.Merge With Selection.Borders(xlEdgeLeft) .LineStyle = xlContinuous .Weight = xlMedium .ColorIndex = 3 End With With Selection.Borders(xlEdgeTop) .LineStyle = xlContinuous .Weight = xlMedium .ColorIndex = 3 End With With Selection.Borders(xlEdgeBottom) .LineStyle = xlContinuous .Weight = xlMedium .ColorIndex = 3 End With With Selection.Borders(xlEdgeRight) .LineStyle = xlContinuous .Weight = xlMedium .ColorIndex = 3 End With End If Range("a2:i31").Select ' sletter alle data i området til hyperlink Selection.ClearContents ' der kan jo være fjernet sider ??? Range("a2").Select '-----------------------------------------Der laves hyperlink til alle ark ------------- For Each ws In Worksheets Worksheets("Menu").Range("a2:a260").Cells(W, K).Select ' reseverer et område til at skrive hyperlink i
If ws.Name = "Menu" Then GoTo Næste ' Hopper over hovedarket "Menu"
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:="'" & ws.Name & "'" & "!A1" ActiveCell.FormulaR1C1 = ws.Name ' skriver hyperlink på alle sider inden for området W = W + 1 Næste: Next ws '------------------------------Soterer kollonne A ---------------------------- Range("A2").Select Range(Selection, Selection.End(xlDown)).Select Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ DataOption1:=xlSortNormal
'--------------- Flytter data over i 4 kolonner ------------------------ R = 2 For I = 31 To 252 Step 28 Range("A" & I & ":A" & I + 28).Cut Cells(2, R).Select ActiveSheet.Paste R = R + 1 Next Columns("A:I").Select Selection.EntireColumn.AutoFit Range("A1").Select
Skulle være Private Sub TreeView1_NodeClick(ByVal Node As MSComctlLib.Node) On Error GoTo Exit_here ThisWorkbook.Sheets(Node.Key).Activate Exit Sub Exit_here:
Hej Bak > jeg mangler som udgangspunkt ikke nogen modulkode ... det jeg viser er et eksempel på hvad jeg gerne ville opnå ... den illustrerede kode er derfor udelukkende et eksempel ... det jeg søgte, var en måde hvorpå jeg ved hjælp af en makro kunne generere en kode som kunne benyttes i TreeView funktionen ... :o)
kabbak´s eksempel opfylder samme behov, blot ikke i en Treeview-funktion
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.