【发布时间】:2018-09-24 14:52:21
【问题描述】:
在VBA中,我写了一个sub,为了这个问题,做了以下事情:
- 创建一个由用户命名的新工作表
- 从由两个用户输入值确定的数据库中提取数据
- 在新工作表中排序数据 (1)
我希望实现的功能是让用户能够直接从 Excel 工作表通过 UDF 输入 三个 变量,如下所示:
Description of how the user should interface with the code
为了实现用户界面的这种特定方法,我似乎需要使用一个函数作为一个宏;
Function Do_Stuff_With_Theese_Imputs(x, y, z)
Call Do_Stuff(x, y, z)
End Function
Sub Do_Stuff(x, y, z)
'Code that makes the new sheet by the name "z"(argument from the function) here:
'Code for database handeling by the variables "x" & "y"(arguments from the function) here:
'Etc...
End sub
我可能会尝试以一种不必要的复杂方式解决这个问题,因此只要 UI 对于用户而言,我对其他实现的建议持开放态度。否则,我需要一些关于如何将参数 x、y 和 z 从 function 传递到 sub 的帮助。
编辑: 由于我的疑问线不清楚,这已成为一个混乱点:
这是用户定义的要求,UDF(我想用作宏)可以从任何此 UDF 所在计算机上的 Exel 表访问'安装。从用户的角度来看,它应该像经典的=SUM 函数一样适用。
编辑 2:
再次明确一点,它应该可以从任何 Excel 工作表访问,而无需在打开工作表时始终显示(以button、extra sheet 或 form 的形式)。
我注意到这可能无法实现。
【问题讨论】:
-
Excel 的计算引擎在重新计算单元格时调用 UDF:不允许 UDF 执行影响任何其他单元格或影响全局/应用程序状态的操作。您需要的是宏,而不是 UDF。
-
您不能使用单元格公式更改公式适用的单元格以外的任何其他内容。您是否考虑过将
Form用于UI用户输入所需信息的地方? -
什么会触发代码生成新工作表?每次重新计算工作表时,您尝试执行的操作都会生成一个新工作表(如果按照您尝试的方式允许)。
-
我应该更清楚一点,这是用户定义的 requirement 以便能够在此使用 UDF(我想像宏一样工作)具体方式。现在我知道这是不可能的,我只需将该结果传递给用户并尝试实现
Form。谢谢!