VB Module kopiëren

Status
Niet open voor verdere reacties.

MarChello75

Gebruiker
Lid geworden
23 jan 2012
Berichten
5
Goedemiddag Forum leden,

bij het volgende probleem heb ik enige hulp nodig;

Ik heb een excel bestandje met in cel A1 t/m A50 verschillende buttons, met daaronder deze macro:

Code:
Sub Knop1_Klikken()

Worksheets(1).Range("b1").Value = Worksheets(1).Range("b1").Value + 1

End Sub

Deze macro telt bij het klikken op de button een aantal (+1) op in cel B1. (een zgn. turflijstje)

Ik heb dus 50 buttons in mijn excelbestand met onder elke button een nieuwe module met bovenstaande macro maar dan dus met Range("b2").... Range("b3").... etc...

Dit moet volgens mij anders kunnen, ik wil namelijk nog meer buttons toevoegen (ook tussenvoegen) en wil niet steeds weer een nieuwe module (macro) maken.

Kan dit simpeler!?
Alvast dank voor ieder hulp.

MvrGr,
Marcel
 
Laatst bewerkt door een moderator:
JE kunt het met alleen cellen doen, maar dan moet je dubbelclicken of rechtsclicken. Daar een knop niet gekoppeld is aan de cell is er geen echt handige manier om de link te leggen
 
Hang die macro aan een toetscombinatie en wijzig de macro zodanig dat hij het doet voor kolom B van de huidige rij.
Dan heb je helemaal geen knoppen nodig en de macro maar 1 keer.
Code:
Sub TelOp()

    If ActiveCell.Row < 51 Then
        Worksheets(1).Range("b" & ActiveCell.Row).Value = _
        Worksheets(1).Range("b" & ActiveCell.Row).Value + 1
    End If

End Sub
 
Laatst bewerkt:
Dank voor jullie antwoord, maar ik wil juist de macro activeren bij het klikken (op de button) middels de linkermuistoets. Dit is makkelijker vanwege het turfen waarvoor ik dit bestand gemaakt hebt. Een toetscombinatie is dan niet handig. Ik ben bang dat ik gewoon voor elke nieuwe button een nieuwe macro moet maken. Je kan denk ik ook niet de verwijzen naar "b1" via een Tab of SelectNextCell o.i.d. maken? Dan heb ik nl. geen verwijzing met een variabele waarde.
 
Dat zou kunnen... als de knop gelinkt was aan een cel. Zoals ik boven reeds meldde is dat jammer genoeg niet het geval. De knop "weet" dus niet waar hij is. Dubbelclicken kan dus wel, maar is weer iets minder vriendelijk dan een knop.
 
Visual Basic is iets anders dan Visual Basic for Applications, VBA is programmeren binnen Office applicaties. Verplaatst naar juiste sectie.
 
Wat je wel kunt doen is de macro variabel maken zodat je deze maar 1 keer nodig hebt.
Code:
Sub TelOp(RegelNo as long)

        Worksheets(1).Range("b" & RegelNo).Value = _
        Worksheets(1).Range("b" & RegelNo).Value + 1

End Sub

De macro's voor de knoppen doe je dan als volgt:
Code:
Sub Knop1_Klikken()
	Call TelOp(1)
End SUb

Sub Knop2_Klikken()
	Call TelOp(2)
End SUb
Enzovoort.
 
Laatst bewerkt:
Hallo edmoor,

ik denk dat dit inderdaad het dichts bij mijn wens komt. Ik hoef nu niet bij een nieuwe button een nieuwe macro te maken, maar kan voldoen met een verwijzing naar bestaande macro (die ik dan wel moet aanvullen met een nieuwe waarde).

Hieronder een plaatje zoals ik het bestand nu gemaakt hebt, ik ga nu nog een macro maken voor de buttons in kolom C waarde -1, dit om nog correcties te kunnen uitvoeren bij het turfen.

Naamloos.png

Bedankt voor je hulp!
 
Je zou de macro zo kunnen doen:
Code:
Sub TelOp(RegelNo as long, Waarde as long)
    Worksheets(1).Range("b" & RegelNo).Value = _
    Worksheets(1).Range("b" & RegelNo).Value + Waarde
End Sub

De knop in kolom A doet dan:
Code:
Call TelOp(1, 1)

en de knop in kolom C doet dan:
Code:
Call TelOp(1, -1)
 
@SNB
Not Found
The requested URL /VBA_ActiveX_controle.html was not found on this server. www.snb-vba.eu
 
Hoi edmoor, ben nog even verder gegaan met je laatste macro.

Ik heb het nu in ieder geval een stuk overzichtelijker, jammer is wel dat je per knop een nieuwe macro moet maken en toewijzen. Anders had ik kunnen volstaan met 2 macro's (1 voor optellen en 1 voor het aftrekken).

Nogmaals dank voor je hulp.
Ik zal de status op opgelost zetten.

groet,
Marcel
 
Je hebt voor het optellen en aftrekken maar 1 macro nodig zoals ik liet zien.
Je moet alleen per knop de Call met de juiste parameters doen.
Dus ik begrijp niet helemaal wat je bedoeld met 1 macro voor optellen en 1 macro voor aftrekken.
 
Laatst bewerkt:
zo bedoelde ik het ook, die Call met de juiste parameters moet je toevoegen in de Code;
heb nu bv. 5 buttons in kolom A en 5 in kolom C, heb daarom 10 Calls moeten toevoegen in de code.

zo dus:

Code:
Sub TelOp(RegelNo As Long, Waarde As Long)

        Worksheets(1).Range("b" & RegelNo).Value = _
        Worksheets(1).Range("b" & RegelNo).Value + Waarde

End Sub
Code:
Sub Knop1_Klikken()
    
    Call TelOp(1, 1)
    
End Sub
Sub Knop2_Klikken()

    Call TelOp(1, -1)
    
End Sub
Sub Knop3_Klikken()
    
    Call TelOp(2, 1)
    
End Sub
Sub Knop4_Klikken()

    Call TelOp(2, -1)
    
End Sub
Sub Knop5_Klikken()
    
    Call TelOp(3, 1)
    
End Sub
Sub Knop6_Klikken()

    Call TelOp(3, -1)
    
End Sub
Sub Knop7_Klikken()
    
    Call TelOp(4, 1)
    
End Sub
Sub Knop8_Klikken()

    Call TelOp(4, -1)
    
End Sub
Sub Knop9_Klikken()
    
    Call TelOp(5, 1)
    
End Sub
Code:
Sub Knop10_Klikken()

    Call TelOp(5, -1)
    
End Sub
 
Laatst bewerkt door een moderator:
Ok dan, zo bedoelde ik het inderdaad :)
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan