Tegn skalafeltet i nærheden af din celle. Højre-klik på skalafeltet --> I "Feltet navn" (Hvor der normalt står: A1) står der: Skala 1 Klik på "Formellinje" og tast: =$C$4
Nu kan celle C4 køres op/ned med knapperne. Standard fra 0 til 30000 ændring i tilvækst 1
Ja, men der kommer en skyder i midten. Den kan man så hive frem og tilbage. Det giver en ny mulighed, skyderen kan indstilles til f.eks. at springe +/- 10 ved klik ved skyder.
Mange vil synes, at 200 kontrolelementer i en Excel-projektmappe er (alt) for mange.
Denne makro opretter 100 knapper med teksten "Plus" i kolonne A i Ark1:
Sub CreateButtonsCodePlus() ActiveSheet.Shapes(Application.Caller).TopLeftCell.EntireRow.Copy End Sub Sub CreateTheButtons() Dim sShape As Shape Dim lLoop As Long
For lLoop = 1 To 100 With Cells(lLoop, "A") Set sShape = Ark1.Shapes.AddFormControl _ (xlButtonControl, .Left, .Top, .Width, .Height) End With With sShape .OnAction = "CreateButtonsCodePlus" .TextFrame.Characters.Caption = "Plus" End With
Next lLoop End Sub
Tilsvarende opretter denne 100 knapper med "Minus" i kolonne C:
Sub CreateButtonsCodeMinus() ActiveSheet.Shapes(Application.Caller).TopLeftCell.EntireRow.Copy End Sub Sub CreateTheButtons() Dim sShape As Shape Dim lLoop As Long
For lLoop = 1 To 100 With Cells(lLoop, "C") Set sShape = Ark1.Shapes.AddFormControl _ (xlButtonControl, .Left, .Top, .Width, .Height) End With With sShape .OnAction = "CreateButtonsCodeMinus" .TextFrame.Characters.Caption = "Minus" End With
Next lLoop End Sub
Knapperne passer til cellerne.
Mht. til beregningsmakroerne tror jeg at du må indsætte dem manuelt, knap for knap. Kopier og rediger dem, du har lavet for celle D1.
Sub Opret_Knapper() Dim i As Integer p = 0.3 For i = 1 To 100
With ActiveSheet.Shapes With .AddFormControl(xlButtonControl, 2, p, 45, 12) .OnAction = "Plus_Minus" .TextFrame.Characters.Text = "Plus" End With End With
With ActiveSheet.Shapes With .AddFormControl(xlButtonControl, 97, p, 45, 12) .OnAction = "Plus_Minus" .TextFrame.Characters.Text = "Minus" End With End With p = p + 14.5 Next End Sub
Private Sub Plus_Minus() r = ActiveSheet.Shapes(Application.Caller).TopLeftCell.Row
If ActiveSheet.Shapes(Application.Caller).TopLeftCell.Column = 1 Then Range("B" & r) = Range("B" & r) + 1 End If If ActiveSheet.Shapes(Application.Caller).TopLeftCell.Column = 3 Then Range("B" & r) = Range("B" & r) - 1 End If End Sub
#26 giver hos mig et resultat, der ser ud som #24.
Med #25 giver Private Sub definitionsfejl om "r". Sub'en opretter knapper, der dog ikke passer helt til cellerne. Jeg tror, at det skyldes, at der angives en konkret størrelse. Det gør koden i #24 ikke. Den anvender celledimensioner (og -placering), så vidt jeg kan se.
Min ambition i #24 var kun at automatisere oprettelsen af kontrolelementerne (knapperne).
Om regnemakroerne forslog jeg (sidst i #24), at de oprettes manuelt. F.eks. ved at fremstille en "flad fil" med 100 x kode fra f.eks. #23 (ret den lille minusfejl) og så indsætte referencer til de 200 knapper og de 100 D-celler.
Den flade fil kan så pastes i et modul.
Jeg tør ikke givet mig i kast med at danne regnemakroerne automatisk :-)
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.