仅在第一次打开Excel文件时如何运行宏

时间:2018-10-11 03:42:27

标签: excel vba excel-vba

我已经为Excel工作表编写了一些VBA代码。问题是我只希望它运行一次,即当用户第一次打开它时。

如果第二次或多次打开,我希望Excel在不运行该VBA代码的情况下正常打开。如何使用VBA进行操作,或者有任何Excel功能? 预先感谢。

4 个答案:

答案 0 :(得分:2)

简单,给工作表2一个特定的名称,并让宏检查该名称作为它的第一个任务,如果找到它,则结束,如果找不到,则运行其余代码...

答案 1 :(得分:1)

在excel的单元格中添加一个标志,每次打开excel时,宏代码都会检查该单元格中的值是否为“ 1”。如果为“ 1”,则第一次打开excel,否则该单元格的值将更改。

以下是代码:

Sub Workbook_Open()

Worksheets("your_wsname").Activate

'to check if it the file is being opened for the first time
If Cells(100, 100).Value = "1" Then
'value is blank if opening file for the first time
'if for first time then following happens
Else
    'call your methods here
    'set flag value 1 in one of the methods
End If

End Sub

答案 2 :(得分:0)

将代码存储在XLSM中(这是其中包含代码所必需的)。

  • 用户从您的网站下载该代码并打开它
  • set -x MAIN_COMMAND="MYSQL_PWD=dbpass /usr/bin/mysql -u dbuser dbname <<< \"select 1 from dual;\"" MAIN_RESULT=$(eval "$MAIN_COMMAND" 2>&1) 触发
    • 代码执行当前所做的任何操作
    • 然后代码将文件另存为 XLSX ,由于代码无法以XLSX格式存储,因此该代码将自动删除所有代码
  • 擦手,完成工作。

答案 3 :(得分:-2)

下面的代码每天运行一次,创建另一个工作表来记录事件,就像我在名为“事件记录”的工作表中创建时间线一样,然后让我的宏检查该特定日期以下的值(如果值> 0,那么宏将无法执行。

Private Sub Workbook_Open()
    Dim Sh As Worksheet, i As Long, Cl As Long, Cntr As Long
    Set Sh = ThisWorkbook.Worksheets("Event Recording")

    Cl = Sh.UsedRange.Cells.Find(What:=Date).Column
    Cntr = Sh.Cells(2, Cl)

    If Cntr = 0 Then
        MsgBox "Hi"
    End If

    Sh.Cells(2, Cl) = Cntr + 1
End Sub