hjælp til at loope alle knapper i et sheet igennem med For Each-løkke
Jeg skal lige have noget hjælp til at styre nogle kommandoknapper som jeg har placeret direkte i et regnskabs-sheetHver måned genereres der et nyt sheet efter en skabelon hvor jeg har de samme knapper liggende.
Jeg har bare en fornemmelse af at disse knapper ikke altid bevarer deres navn efter kopiering af skabelon-sheet til en ny måneds-sheet.
For at få oplyst navn på mine kanpper i arket, har jeg indspillet en makro, for at se hvordan jeg tilgår disse knapper:
første forsøg kom til at se således ud:
'
ActiveSheet.Shapes.Range(Array("Button 5")).Select
ActiveSheet.Shapes.Range(Array("Button 2")).Select
ActiveSheet.Shapes.Range(Array("Button 4")).Select
ActiveSheet.Shapes.Range(Array("Button 3")).Select
End Sub
samme forsøg som jeg indspillede 10 min senere, kom til at se således ud (nu har knapperne åbenbart allerede fået nye navne):
'
ActiveSheet.Shapes.Range(Array("Button 7")).Select
ActiveSheet.Shapes.Range(Array("Button 4")).Select
ActiveSheet.Shapes.Range(Array("Button 6")).Select
ActiveSheet.Shapes.Range(Array("Button 5")).Select
End Sub
Jeg kunne godt tænke mig at lave en for each-løkke hvor jeg løber mine kanpper igennem, undersøger hvilken tekst der står i knappen, og tildeler makro derefter.
Er der en "ekspert" der kan hjælpe mig med ar opstille en For Each-løkke i min VBA-procedure,der løber alle mine knapper igennem?
så vil jeg for hver knap der findes trække text
If Selection.Characters.Text = "Indtægter"
' tildel makro der åbner indtægt-fuseform...
End if
Jeg har selv laver nedenstående lille forsøg, men det fejler allerede i if-sætningen på at Shape.Characters.Text er ukendt egenskab.
Det ser altså ud til at For Each-løkken kører, men if-sætningen fejler
det object jeg bruger "Shape", skal det evt. erklæres først?
'loop alle knapper og tildel makro...
For Each Shape In ActiveSheet.Shapes
If Shape.Characters.Text = "Indtægter" Then
' tildel makro der åbner indtægt-fuseform...
Shape.OnAction = "RegIndtaegt" ' RegIndtaegt
End If
If Shape.Characters.Text = "Udgifter" Then
' tildel makro der åbner indtægt-fuseform...
Shape.OnAction = "RegUdgifter" ' RegUdgifter
End If
Next Shape
End Sub