我有一个函数,它有一个参数,我想将其传递给 Excel VBA 中的子变量。该函数的参数是一个范围,例如 A1:B1,所以我希望将该范围传递给另一个子函数。有没有办法做到这一点?到目前为止,我在互联网上读到的所有内容都涉及在子程序之间传递函数或参数的结果,但不是将函数的参数传递给子程序的变量。
提前致谢!
编辑以获取更多详细信息:
我有一个函数 BuildpgSQL,其以下参数均为范围数据类型:FieldNames、Table、PageFilters 和 GroupBy。我还有一个子组件,它将使用相同的 PageFilters 范围作为变量。我不想将参数定义两次 - 一次为函数,再次为子程序,我只想将 PageFilters 参数从 BuildpgSQL 传递到子程序的变量。
我想编写一条 SQL 语句,该语句根据具有三种可能结果的 CASE 语句返回一个值。
1) 如果列值以“C0”开头,则它返回表中两列的串联
2) 如果该列以“L0”开头,则获取该行中另一列 (_PARENT_PROJECT_NUMBER) 中的值,并查看该值是否驻留在另一个表中。如果不是,则返回值 _PARENT_PROJECT_NUMBER。
3)如果_PARENT_PROJECT_NUMBER确实驻留在另一个表中,则返回另一个表“Rollup_Project_Mapping”中“Rollup_Project”列中的值。
我在下面编写的语句工作正常,但第 12 行除外,"Rollup_Project_Mapping"."Rollup_Project"在该行中,如果在另一个表中找到 _PARENT_PROJECT_NUMBER,我希望它返回另一个表的值。这是错误消息:
ERROR: syntax error at or near "FROM"
LINE 12: FROM "Rollup_Project_Mapping"."Rollup_Project"
Run Code Online (Sandbox Code Playgroud)
有谁知道当 CASE 语句的这一部分为真时如何返回另一个表中的值?
SELECT
CASE
WHEN LEFT("_PROJECT_NUMBER",2)='C0' THEN
'('||"_PROJECT_NUMBER"||') '||"_PROJECT_DESCRIPTION"
WHEN LEFT("_PROJECT_NUMBER",2)='L0' THEN
CASE
WHEN (SELECT "Rollup_Project" FROM "Project_Rollup_Mapping" WHERE "PA_ACCOUNTED_TEST"."_PARENT_PROJECT_NUMBER" = "Project_Rollup_Mapping"."Project") IS NOT NULL THEN
"Rollup_Project_Mapping"."Rollup_Project"
ELSE "_PARENT_PROJECT_NUMBER"
END
END AS Rollup_Project2
FROM "PA_ACCOUNTED_TEST";
Run Code Online (Sandbox Code Playgroud)