• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Bedieningsknop met wisselende macro-koppeling

Status
Niet open voor verdere reacties.

anton44

Verenigingslid
Lid geworden
20 mei 2005
Berichten
1.597
Mijn procesafloop met diverse macro's start met het activeren van een knop. Het is noodzakelijk dat het runnen onderbroken wordt voor visuele controle.
Na inspectie en eventuele correctie wil ik met dezelfde knop de volgende stappen laten doorlopen enz.
Ik heb een oplossing door de koppeling met de knop telkens te veranderen door weer een macro.
Mij lijkt dat het ook op een betere/eenvoudigere manier kan.
Zie bijlage.
Bekijk bijlage Map1.xlsm
 
is dit wat?

Code:
Sub SjonR()

If Cells(5, 6) = "" Then
        Cells(5, 6) = "123"
ElseIf Cells(7, 6) = "" Then
        Cells(7, 6) = "456"
ElseIf Cells(9, 6) = "" Then
        Cells(9, 6) = "789"
Else
        Range("F5:F10").ClearContents
End If

End Sub
 
is dit wat?

Code:
Sub SjonR()

If Cells(5, 6) = "" Then
        Cells(5, 6) = "123"
ElseIf Cells(7, 6) = "" Then
        Cells(7, 6) = "456"
ElseIf Cells(9, 6) = "" Then
        Cells(9, 6) = "789"
Else
        Range("F5:F10").ClearContents
End If

End Sub

Hi SjonR,
Bedankt, als primair werkt je aangeboden oplossing maar is niet waarna ik op zoek ben.

Bij de 1e druk op de knop moet macro 1 gaan runnen (hier voorgesteld als een input van "123" maar in werkelijkheid een zeer lange code bv. het sorteren volgens critera)
Bij een 2e maal drukken op dezelfde knop moet macro 2 gaan runnen enz.
 
Dan zou ik het zo doen:

Code:
Public X As Long

Sub KiesMacro()
    Application.Run "Macro" & X + 1
End Sub

Sub Macro1()
    Range("F5").Select
    ActiveCell.FormulaR1C1 = "123"
       Call Macro6
            Range("C6").Select
    X = X + 1
End Sub
Sub Macro2()
    Range("F7").Select
    ActiveCell.FormulaR1C1 = "456"
    Call Macro7
            Range("C6").Select
    X = X + 1
End Sub
Sub Macro3()
    Range("F9").Select
    ActiveCell.FormulaR1C1 = "789"
    Call Macro8
            Range("C6").Select
    X = X + 1
End Sub
Sub Macro4()
    Range("F5:F10").Select
    Selection.ClearContents
    Range("C6").Select
        Call Macro5
    X = 0
End Sub

Kiesmacro dan aan de Shape hangen natuurlijk
 
Als ik die code in een module plaats komt er een foutmelding
FS-2018-03-16_151703.jpg
 
ik gok dat in Module 1 ook nog een macro 1 t/m 4 staat!

Het callen van Macro 5 t/m 8 ben ik er vergeten uit te halen, dat zou ook nog een probleem kunnen zijn:

Code:
Public X As Long

Sub KiesMacro()
    Application.Run "Macro" & X + 1
End Sub

Sub Macro1()
    Range("F5").Select
    ActiveCell.FormulaR1C1 = "123"
            Range("C6").Select
    X = X + 1
End Sub
Sub Macro2()
    Range("F7").Select
    ActiveCell.FormulaR1C1 = "456"

            Range("C6").Select
    X = X + 1
End Sub
Sub Macro3()
    Range("F9").Select
    ActiveCell.FormulaR1C1 = "789"
            Range("C6").Select
    X = X + 1
End Sub
Sub Macro4()
    Range("F5:F10").Select
    Selection.ClearContents
    Range("C6").Select
    X = 0
End Sub
 
Laatst bewerkt:
ik gok dat in Module 1 ook nog een macro 1 t/m 4 staat!

Bravo, je gok was goed :thumb: Na die verwijderd te hebben werkt je code wel.
Ik heb even tijd nodig om deze in de echte omgeving te testen en laat je snel iets weten.
 
@Sjon


En nu nog even alle 'select's verwijderen.....
 
@ snb

De inhoudelijke code was niet van belang bleek na mijn eerste poging, dus dat heb ik maar gelaten voor wat het was.
 
@ snb

De inhoudelijke code was niet van belang bleek na mijn eerste poging, dus dat heb ik maar gelaten voor wat het was.

Inderdaad.
@snb Bedankt voor het meedenken :thumb:
De code doet wat hij moet doen. Mijn 1e echte trial gaf wat probleempjes. Ik was vergeten de laatste macro X = O mee te geven (was X = X +1) :eek:
Bij het niet volledig afmaken van de stappen wordt niet teruggegaan naar de uitgangspositie. Even wennen.
In de 1e macro is er een voorwaarde om naar de volgende stap te gaan als er in een bepaalde map een bestand "bestandsnaam.xlsx" aanwezig is. Ik ben nog aan het stoeien om dat voor elkaar te krijgen dat bij afwezigheid macro 2 niet gerund wordt.
If ... X = X+1
Else ... X = 0
 
@SjonR & snb, heel veel dank voor de hulp.

Het If / Else moet ik komende dagen eens verder verdiepen. Kom er momenteel niet uit vanwege tegenstrijdige voorwaarden.
 
Ik kom al een heel eind met aanpassingen in macro1
Alleen moet niet cel A1 in blad1 gechecked worden maar cel A1 in blad2
Als ik With Sheets("Blad1") wijzig in With Sheets("Blad2") werkt de check niet.
Cel A1 is gevuld met een bestandsnaam of leeg. Bij leeg mag macro2 niet gestart worden.

Code:
Sub Macro1()
    Range("F5").Select
    ActiveCell.FormulaR1C1 = "123"
    '   Call Macro6
    With Sheets("Blad1")
        If Range("A1") > 1 Then
          X = X + 1
    Else
        MsgBox "Gestopt", vbInformation, ""
    Call Macro4
    End If
    End With
End Sub
 
Alle elementen die je binnen een With End With wil gebruiken moeten voorafgaan worden door een . anders wordt het element van de activesheet gebruikt.

Code:
With Sheets("Blad2")
 If [SIZE=4][COLOR="#FF0000"].[/COLOR][/SIZE]Range("A1") > 1 Then
 
Alle elementen die je binnen een With End With wil gebruiken moeten voorafgaan worden door een . anders wordt het element van de activesheet gebruikt.

Code:
With Sheets("Blad2")
 If [SIZE=4][COLOR="#FF0000"].[/COLOR][/SIZE]Range("A1") > 1 Then

YES ! :thumb: Wat een puntje zoal kan doen.
Met dank VenA
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan