Excel VBA:Workbook_Open

时间:2012-12-19 06:23:11

标签: excel vba worksheet

我正在使用Workbook_Open在打开应用程序时调用userform,这很正常。但是我希望它只在第一次打开时运行。 我尝试了这个,如果我从编辑器运行sub而不是打开文件时它可以工作。

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

注意:A1包含将在用户表单运行后填充的值

问题是,在将数据加载到工作表之前,它会打开用户表单。

这有可能解决这个问题,还是我需要采取不同的方法?

1 个答案:

答案 0 :(得分:5)

我认为这是因为您在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