当电子表格被打开时,使用VBA填充单元格为当前日期。

4

如何在电子表格打开时插入今天的日期,以便如果有人想更改它,他们可以在单元格内直接更改。

我尝试了以下内容,但没有太多成功:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim temp As String

    If Home.Range("_invoiceDate").Value = "" Then
        Home.Range("_invoiceDate").Value = Date
    End If
End Sub  

这个单元格是在工作表 "Home" 中,命名范围为 "_invoiceDate"。

非常感谢您的帮助。


你是指“当工作簿打开时”吗? - simpLE MAn
3
也许您需要使用“Private Sub Worksheet_Activate()”事件而不是“Worksheet_Change”事件? - Dmitry Pavliv
在“Private Sub Worksheet_Activate()”事件中添加行“MsgBox ActiveSheet.Name”。当活动工作表时,您会得到什么消息? - Dmitry Pavliv
好的,它只在我切换工作簿时有效,而不是在第一次打开电子表格时。 - AlexB
2
当我在工作簿之间切换时,实际上是在工作表之间切换。据我所理解,您需要按照@Mike的答案进行操作。 - Dmitry Pavliv
显示剩余9条评论
1个回答

7

为了让代码在打开工作簿时运行,您需要将代码放置在工作簿表格中,如下图所示。

Private Sub Workbook_Open()
    dim Home as Worksheet
    set Home = Worksheets("Home")
    Home.Range("_invoiceDate").Value = Format(Now(),"mm/dd/yyyy")  
End Sub

我相信这就是你要找的内容。
我测试了在工作表之间切换,它可以正常工作。
Private Sub Worksheet_Activate()

Dim Home As Worksheet
Set Home = Worksheets("Home")
Home.Range("_invoiceDate").Value = Format(Now(), "mm/dd/yyyy")

End Sub

祝你好运,编码愉快!

1
谢谢Mike,第二个版本在你切换工作表时有效,但当我使用你的代码的第一个版本时,什么也没有发生,有什么想法吗? - AlexB
第一个版本仅在打开工作簿时运行。我将使用此区域来初始化值,为用户提供用户表单等机会。当您首次打开vba编辑器时,它是列表中的最后一个工作表,称为ThisWorkbook。很高兴代码对您有帮助! - Mike
1
我必须承认,这是我的错误,因为我没有正确地放置您的代码,但我已经找到了我的错误,现在一切都正常工作了。非常感谢。 - AlexB

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接