Geachte helpmij helpers,
Allereerst dank ik u voor de tijd die u neemt. Laat ik het probleem zo goed mogelijk omschrijven. Ik wil een gebruiker toegang geven tot het Cells>Format Cells form (die normalerwijze te voorschijn komt door: rechtermuiknop op een cel, Format Cells... optie te klikken). Als dit gedaan wordt bestaat het menu echter uit zes tabbladen zijnde:
Ik wil dat een gebruiker alleen het eerste tabblad te zien krijgt, dit krijg ik echter niet voor elkaar. De werkwijze die gevolgd wordt is als volgt. Ik probeer het format menu aan te roepen vanaf een Userform. De wijze waarop ik dit uitgevoerd heb is de menuknop als object te "setten" en uit te voeren. Om dit te doen heb ik alle CommandBars en CommandBarButtons uitgepluist door onderstaande code uit te voeren:
Uit deze lijst heb ik de CommandBar Cell gekozen met Index nummer 29. Van deze CommandBar heb ik de CommandBarButton &Format Cells... gekozen met Index 11. Met onderstaande code heb ik het menu aangeroepen via VBA. Ik moet echter opmerken dat ik niet weet of dit de juiste procedure is om het op te roepen.
Als deze code in een simpele Userform gegoten wordt, waarin een TextBox en een ander object aanwezig is (Dit om de TextBox te "Exitten"). Dan kan bij de Private Sub TextBox1_Enter() code, de code van Sub set_cmd_bar() ingevoerd worden, dit kan dan als volgt eruit zien:
De code roept het menu op, maar ik zou graag de tabbladen 2 tm 6 willen verbergen (zie bovenstaande lijst voor namen van de tabbladen). Ik heb echter geen idee hoe ik dat precies zou moeten doen, wellicht iets met de CommandBarButton.Parameter?
Ik zou elke hulp/suggestie op prijs stellen.
Met vriendelijke groet,
Tilly
Allereerst dank ik u voor de tijd die u neemt. Laat ik het probleem zo goed mogelijk omschrijven. Ik wil een gebruiker toegang geven tot het Cells>Format Cells form (die normalerwijze te voorschijn komt door: rechtermuiknop op een cel, Format Cells... optie te klikken). Als dit gedaan wordt bestaat het menu echter uit zes tabbladen zijnde:
- Number
- Alignment
- Font
- Border
- Patterns
- Protection
Ik wil dat een gebruiker alleen het eerste tabblad te zien krijgt, dit krijg ik echter niet voor elkaar. De werkwijze die gevolgd wordt is als volgt. Ik probeer het format menu aan te roepen vanaf een Userform. De wijze waarop ik dit uitgevoerd heb is de menuknop als object te "setten" en uit te voeren. Om dit te doen heb ik alle CommandBars en CommandBarButtons uitgepluist door onderstaande code uit te voeren:
Code:
Sub Cmd_bar_list_plus_items()
Dim rg As Range
Dim cBar As CommandBar
'Dim cBar_But As CommandBarButton
'Dim cBar_But_Item As Variant
'Ik heb mijn Worksheet hernoemd naar Commandbars
Set rg = ThisWorkbook.Worksheets("Commandbars").Range("A2")
For Each cBar In Application.CommandBars
rg.Value = cBar.Name
rg.Offset(0, 1).Value = cBar.NameLocal
rg.Offset(0, 2).Value = cBar.Index
rg.Offset(0, 3).Value = cBar.Context
Set rg = rg.Offset(1, 0)
For i = 1 To cBar.Controls.Count
rg.Offset(0, 1).Value = cBar.Controls(i).ID
rg.Offset(0, 2).Value = cBar.Controls(i).Index
rg.Offset(0, 3).Value = cBar.Controls(i).Caption
Set rg = rg.Offset(1, 0)
Next i
Next cBar
End Sub
Uit deze lijst heb ik de CommandBar Cell gekozen met Index nummer 29. Van deze CommandBar heb ik de CommandBarButton &Format Cells... gekozen met Index 11. Met onderstaande code heb ik het menu aangeroepen via VBA. Ik moet echter opmerken dat ik niet weet of dit de juiste procedure is om het op te roepen.
Code:
Sub set_cmd_bar()
Dim cBar As CommandBar
Dim cBar_But As CommandBarButton
Dim cBar_But_Item As Variant
Dim org_val As Variant
Dim rg As Range
'Range waarvan ik de eigenschappen gebruik
Set rg = ThisWorkbook.Worksheets("Sheet2").Range("A1")
'Commandbar Cell (index=29) wordt aan cBar gekoppeld
Set cBar = Application.CommandBars.Item(29)
'Commandbar button &Format Cells... (index=11) wordt aan cBar_But gekoppeld
Set cBar_But = cBar.Controls(11)
'Als cBar_But.Execute uitgevoerd wordt, wordt de huidige selectie als eigenschappen _
"bron" weergegeven.
rg.Select
'Dit toont het daadwerkelijke Excel menu dat anders via rechtermuisknop _
Format Cells... getoond wordt.
cBar_But.Execute
'Zet de ingestelde NumberFormat als cel.value
rg.Value = rg.NumberFormat
End Sub
Als deze code in een simpele Userform gegoten wordt, waarin een TextBox en een ander object aanwezig is (Dit om de TextBox te "Exitten"). Dan kan bij de Private Sub TextBox1_Enter() code, de code van Sub set_cmd_bar() ingevoerd worden, dit kan dan als volgt eruit zien:
Code:
Private Sub TextBox1_Enter()
Dim cBar As CommandBar
Dim cBar_But As CommandBarButton
Dim cBar_But_Item As Variant
Dim org_val As Variant
Dim rg As Range
Set rg = ThisWorkbook.Worksheets("Sheet2").Range("A1")
Set cBar = Application.CommandBars.Item(29)
Set cBar_But = cBar.Controls(11)
rg.Select
cBar_But.Execute
rg.Value = rg.NumberFormat
TextBox1.Value = rg.Value
End Sub
De code roept het menu op, maar ik zou graag de tabbladen 2 tm 6 willen verbergen (zie bovenstaande lijst voor namen van de tabbladen). Ik heb echter geen idee hoe ik dat precies zou moeten doen, wellicht iets met de CommandBarButton.Parameter?
Ik zou elke hulp/suggestie op prijs stellen.
Met vriendelijke groet,
Tilly