Notifications
Clear all

Chamar Private Sub em uma Sub

2 Posts
2 Usuários
0 Reactions
942 Visualizações
(@lacorte)
Posts: 11
Eminent Member
Topic starter
 

Fala Galera! Tenho dois códigos que gostaria que rodassem juntos, podem me ajudar?  Comecei no VBA agora e estou quebrando a cabeça! 🤪

Obrigado!

Option Explicit
Dim tempo As Date



Sub executa_por_tempo()

tempo = Now + TimeValue("00:00:05")
Call Application.OnTime(tempo, "executa_por_tempo")

    'Gostaria que a Private Sub rodasse aqui
    
End Sub
    



Sub finaliza_por_tempo()

Call Application.OnTime(tempo, "executa_por_tempo", , False)

End Sub

 

Private Sub

Private Sub Worksheet_Change(ByVal Target As Range)
    Static OldVal(2 To 709) As Variant
    Dim E As Range, F As Range, r As Range, Intersekt As Range
    Dim rw As Long

    Set E = Range("E2:E709")
    Set F = Range("F2:F709")

    Set Intersekt = Intersect(E, Target)
    If Intersekt Is Nothing Then Exit Sub

    Application.EnableEvents = False
        For Each r In Intersekt
            rw = r.Row
            If r.Value <> OldVal(rw) Then
                r.Offset(0, 1).Value = r.Offset(0, 1).Value + 1
                OldVal(rw) = r.Value
            End If
        Next r
    Application.EnableEvents = True
End Sub

 

 
Postado : 23/12/2021 8:41 am
(@edsonbr)
Posts: 0
New Member
 

Bom dia, @Lacorte

Pra poder executar uma Private Sub use o método Application.Run, não esquecendo de qualificar os objetos:

Por exemplo, pra simular de maneira "fake" o evento descrito acima Worksheet_Change da planilha cujo CodeName (não é o Name) é Planilha1 e passando como parâmetro a célula A1 da Planilha1 como Target, vc poderia usar:

  Application.Run "Planilha1.Worksheet_Change", Planilha1.Range("A1")

Se sua Private Sub estiver num Módulo ordinário (digamos Módulo1) ao invés de num módulo dos módulos de objetos do Excel, poderia ser, digamos:

Application.Run "Módulo1.MinhaSubPrivada", PrimeiroParâmetro, SegundoParâmetro 

Como pode observar, os parâmetros, se houverem, são inseridos na sequência, separados por vírgulas.

 
Postado : 24/12/2021 7:53 am