vba中如何在一个function中 输入一个参数返回另一个参数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vba中如何在一个function中 输入一个参数返回另一个参数相关的知识,希望对你有一定的参考价值。
如下面所列的sub,我希望function可以把RowNumber返回,谢谢指教
Sub Macro2()
Dim RowNumber As Integer
Dim SheetName As String
SheetName = Range("A3")
RowNumber = 找行数(SheetName)
End Sub
Function 找行数(ByVal SheetName As String) As Integer
Sheets(SheetName).Select
RowNumber = Cells.Find(What:="2013年", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Row
MsgBox RowNumber
End Function
1、首先打开excel在工具栏中找到开发工具,然后打开编辑页面,在页面上输入程序,如图所示,创建一个函数,也是比较方便的。直接使用function。
2、然后给函数命名,函数名后面的括号内部需要写上函数的参数,这里有参数可以写,没有参数也可以不写。以求和函数为例,写上两个参数。
3、下方定义函数的计算公式,将最终的输入结果通过弹出对话框的形式显示出来,使用msgbox比较方便。输入完成之后,点击运行。
4、在弹出来的对话框中可以看到整个表格中定义的函数,选择需要运行的函数,点击运行,如图所示。
5、这里可以看到在excel表格中,已经弹出msgbox,显示最终的计算结果,这就是定义的求和函数计算的结果。
参考技术A调用是方法名(参数),通过方法名返回值信息
1、定义一个带参数的方法
Function Test(ByVal s as String) '定义一个string类型的参数sTest = "返回值" '返回一个字符串"返回值"
End Function
2、参数调用和值返回
Dim rtn '定义一个变量rtn = Test("2");//传入参数2,返回值赋值给rtn 参考技术B Sub Macro2()
Dim RowNumber As Integer
Dim SheetName As String
SheetName = Range("A3")
RowNumber = 找行数(SheetName)
End Sub
Function 找行数(ByVal SheetName As String) As Long
Sheets(SheetName).Select
找行数 = Cells.Find(What:="2013年", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Row
End Function本回答被提问者和网友采纳
如何在 SQL Server 存储过程/函数中声明输入输出参数?
【中文标题】如何在 SQL Server 存储过程/函数中声明输入输出参数?【英文标题】:How To Declare Input-Output Parameters In SQL Server Stored Procedure/Function? 【发布时间】:2018-08-14 05:37:21 【问题描述】:在甲骨文中,
我们可以像下面这样声明一个输入-输出参数(不仅仅是输入或输出):
Create Or Replace Procedure USERTEST.SimpleInOutProcedure(
p_InputInt Int,
p_OutputInt out Int,
p_InputOutputInt in out Int
) AS
BEGIN
p_OutputInt := p_InputInt + 1;
p_InputOutputInt := p_InputOutputInt + p_InputOutputInt;
END;
但是,当我尝试在 SQL Server 中声明时,脚本无法编译:
create procedure SimpleInOutProcedure
@p_InputInt int, @p_OutputInt int input output
As
Begin
Select * from TestTableCommonA;
End
“输入”一词不是预期的,因此在 SQL Server Management Studio 中不是蓝色的:
我的脚本有什么问题,
我想这样做是因为我需要为 SQL Server DB 创建“等效”读取器,该读取器以前是为 Oracle DB 创建的,并且具有输入/输出参数的读取器。
【问题讨论】:
【参考方案1】:这是 SQL 输入和输出参数的示例代码。
CREATE PROCEDURE [dbo].[sample_Insert]
@name varchar(500),
@entryby int,
@RetVal INT = 0 OUT
AS
SET NOCOUNT ON
INSERT INTO dbo.Master
( name ,
entry_date ,
entry_by
)
VALUES ( @name , -- service_name - varchar(1000)
dbo.GetActDate() , -- entry_date - datetime
@entryby -- entry_by - int
)
IF @@ERROR = 0
BEGIN
SET @RetVal = 1 -- 1 IS FOR SUCCESSFULLY EXECUTED
End
ELSE
BEGIN
SET @RetVal = 0 -- 0 WHEN AN ERROR HAS OCCURED
End
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
【讨论】:
感谢您的示例!不过这并没有多大帮助,因为我想知道的是 SQL Server 中是否有等效的输入输出【参考方案2】:如果您将参数声明为 OUTPUT,则它同时充当 Input 和 OUTPUT
CREATE PROCEDURE SimpleInOutProcedure
(
@p_InputInt INT,
@p_OutputInt INT OUTPUT
)
AS
BEGIN
SELECT
@p_OutputInt = @p_OutputInt
END
GO
DECLARE @p_OutputInt int = 4
EXEC SimpleInOutProcedure @p_InputInt = 1, @p_OutputInt = @p_OutputInt OUTPUT
SELECT @p_OutputInt
【讨论】:
这也是我怀疑的......但是,是否有任何关于此的明确文档?因为我找不到关于此的明确文档,因为只要有可能,我不想错过任何等价物,尤其是在 both 输入-输出行为部分。 (虽然我不知道它会作为输入和输出,但我认为它会是要么输入或输出)。 我没有任何文档。但这看起来不需要详细的文档 好的,让我测试一下你的脚本 是的,@p_OutputInt 似乎既充当输入又充当输出。谢谢!以上是关于vba中如何在一个function中 输入一个参数返回另一个参数的主要内容,如果未能解决你的问题,请参考以下文章