Запустите этот Worksheet_Calculate при открытии книги без запуска моего макроса - PullRequest
0 голосов
/ 18 января 2019

Прямо сейчас мой процесс работает правильно, с помощью этого сообщества, однако мне нужен этот Worksheet_Calculate, чтобы НЕ выполнять макрос (например, MacroRuns ), когда книга открывается, но она мне все еще нужна работать так же, как и в настоящее время, после открытия рабочей книги.

Заранее большое спасибо за помощь!

Код, который я использую:

в ThisWorkbook

Option Explicit

Private Sub Workbook_Open()
    TargetStart
End Sub

в окне кода целевого листа

Option Explicit

Private Sub Worksheet_Calculate()
Application.EnableEvents = False
    TargetCalc Me
Application.EnableEvents = True
End Sub

в модуле 1

Option Explicit

Public TargetValue As Variant
Private Const cTarget As String = "C3"

Sub TargetCalc(ws as Worksheet)
    If ws.Range(cTarget) <> TargetValue Then
'this is where I would like the code to say something like, "if workbook just opened, exit -- otherwise continue. If this is even possible.
       Call MacroRuns
        TargetValue = ws.Range(cTarget).Value
    End If
End Sub

Sub TargetStart()
    TargetValue = Sheet1.Range(cTarget).Value
End Sub


Sub MacroRuns()

    Call UpdateMsgBox

End Sub

Ответы [ 2 ]

0 голосов
/ 19 января 2019

Пожалуйста, попробуйте это расположение.

Public StartUp As Boolean

Private Sub Workbook_Open()
    StartUp = True
    TargetStart
End Sub

Sub TargetCalc(ws As Worksheet)
    If ws.Range(cTarget) <> TargetValue Then
        If Not StartUp Then MacroRuns
        StartUp = False
        TargetValue = ws.Range(cTarget).Value
    End If
End Sub

или, возможно, вы предпочитаете, чтобы это было так.

Sub TargetCalc(ws As Worksheet)
    If ws.Range(cTarget) <> TargetValue Then
        If Not StartUp Then
            MacroRuns
            TargetValue = ws.Range(cTarget).Value
        End If
        StartUp = False
    End If
End Sub
0 голосов
/ 18 января 2019

Я думаю, что это может решить вашу проблему:

В этой рабочей книге:

Private Sub Workbook_Open()
    Worksheets("NameHere").Range("A1") = True
End Sub

В окне кода целевого листа:

Private Sub Worksheet_Calculate()
    If Worksheets("NameHere").Range("A1") Then MacroRuns
    Worksheets("NameHere").Range("A1") = False
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...