为什么我不能使用VBA更改活动的Excel工作表

时间:2018-05-11 14:56:09

标签: excel vba

我有一个函数试图将当前活动工作表(“Sheet1”)更改为(Sheet2),然后为Sheet2中的单元格赋值。
但是,ActiveSheet.name不会更改,并且分配失败。看到代码片段。该函数从sheet1调用。

Dim oldwksheet as String

    oldwksheet = ActiveSheet.Name       'value is Sheet1     
    Sheets("Sheet2").Activate     
    Sheets("Sheet2").Select      
    oldwksheet = ActiveSheet.Name       'value still is Sheet1"          
    Sheets("Sheet2").Range("F2") = Now() 'this fails.

end function

为什么呢?我究竟做错了什么。

1 个答案:

答案 0 :(得分:0)

我无法说出原因,但您可以使用功能

假设您的功能以" MyFunction"命名。然后在相关的工作表代码窗格中放入以下代码:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count = 1 Then If Left(Target.Formula, 12) = "=MyFunction(" Then Sheets("Sheet2").Range("F2") = Now() 
End Sub

这样,只要在相关工作表的任何单元格中键入=MyFunction(),当前日期和时间就会放在Sheet2的单元格F2中