Excel VBA: Workbook_Open

Я использую Workbook_Open для вызова пользовательской формы при открытии приложения, это работает нормально. Однако я бы хотел, чтобы он запускался только при первом открытии. Я пробовал это, и он работает, если я запускаю подпрограмму из редактора, но не когда открываю файл.

Sub Workbook_Open()
If Worksheets("DataSheet").Range("A1").Value = "" Then
     QuickStartForum.Show
End If
End Sub

Примечание: A1 содержит значение, которое будет заполнено после запуска пользовательской формы.

Похоже, проблема в том, что он открывает пользовательскую форму до того, как данные загружаются в рабочий лист.

Есть ли способ обойти это или мне нужно использовать другой подход?


person dud    schedule 19.12.2012    source источник


Ответы (1)


Я думаю, это потому, что у вас есть этот код в Module. Вам нужно поместить код в "ThisWorkBook".

Я пробовал этот следующий код, и у меня не было проблем, когда он был в "ThisWorkBook", он не запускался в "Module1"

Private Sub Workbook_Open()
    If Worksheets("DataSheet").Range("A1").Value = "" Then
         QuickStartForum.Show
         Worksheets("DataSheet").Range("A1").Value = "filled" ' <-- this fills the cell with data for testing, so that when you reopen the file it should not re-open the userform
    Else
        MsgBox ("not shown because the A1 cell has data")
    End If
End Sub
person Chris    schedule 19.12.2012
comment
Должен ли sub быть private? - person Timo; 12.05.2021