调用VBA函数

调用VBA函数,vba,function,excel,Vba,Function,Excel,我有一个调度excel宏,它将每月的每一天作为单独的excel工作表列出。在我的宏中,“星期日”表汇总了每位员工每小时的工作时间,并给出了每周的总计。我试图创建一个函数,让我可以选择我需要的纸张,尽可能多的上限和下限,但我无法让它工作。问题是什么?目前我有: Function SampleSum(ByVal ZZ As Integer, ByVal XX As Integer) As Integer Application.Volatile SampleSum = Sheets(ZZ).Rang

我有一个调度excel宏,它将每月的每一天作为单独的excel工作表列出。在我的宏中,“星期日”表汇总了每位员工每小时的工作时间,并给出了每周的总计。我试图创建一个函数,让我可以选择我需要的纸张,尽可能多的上限和下限,但我无法让它工作。问题是什么?目前我有:

Function SampleSum(ByVal ZZ As Integer, ByVal XX As Integer) As Integer
Application.Volatile
SampleSum = Sheets(ZZ).Range("BA5") + Sheets(XX).Range("BA5")
Sheets(XX).Range("BB5") = SampleSum
End Function

我想能够“调用”任何2个数字或变量代替ZZ&XX的函数

首先,由于您将应用程序声明为“volatile”,因此我不会从那里以编程方式编辑您的工作表,因为它可能会进入循环: 第二,函数返回一些东西。子例程没有。如果你只需要在一个单元格中写,我建议你使用一个子程序

Function SampleSum(ByVal ZZ As Integer, ByVal XX As Integer) As Integer
    Application.Volatile
    SampleSum = Sheets(ZZ).Range("BA5") + Sheets(XX).Range("BA5")
End Function

Sub Main()
    Sheets(XX).Range("BB5") = SampleSum(ZZ, XX)
End Sub

“Main”子部分中的ZZ和XX可以是您选择的数字

您描述的函数正在工作……从工作表调用的函数只能向调用单元格返回值。您不能使用自定义项操作其他区域/单元格。有关说明和可能的解决方法,请参阅。我很抱歉,这只是一个示例函数,我正试图找到解决方法。在最初的子单元中,代码为a=5的sum=0'到g=(c-7)的97'sum=0'到c'sum=sum+Sheets(g).单元格(a,53)'wbMain.工作表(c).单元格(a,54)=sum'Next g'Next a。我需要一个函数,它将采用我选择的2个工作表索引,而不是重复此代码。我不能让它作为一个函数工作。如果我在宏运行后更新任何每日总计,则上面的示例函数不会更新每周总计。我想Application.Volatile会解决这个问题。您是否尝试过使用“工作表更改”事件?以下是基础:您应该进入所选工作表的模块,然后将这两个下拉菜单设置为“工作表”和“更改”。然后你可以调用你的函数。每次更改工作表时都会发生这种情况。小心:你可能会被困在这个循环中!