Vbscript 如何为一个函数编写代码,该函数在调用时将返回2个值并写入excel?

Vbscript 如何为一个函数编写代码,该函数在调用时将返回2个值并写入excel?,vbscript,Vbscript,我的问题是如何从函数中返回两个值Sales\u Tax\u Amount和Total\u Price 以下是我目前的代码: Dim Sale_Amount, Sales_Tax_Rate, Sales_Tax_Amount, Total_Price Dim MySheet, RowCount, i 'Create connection b/w UFT and Excel Set MyExcel = CreateObject("Excel.Application") MyExcel.Workbo

我的问题是如何从函数中返回两个值Sales\u Tax\u Amount和Total\u Price

以下是我目前的代码:

Dim Sale_Amount, Sales_Tax_Rate, Sales_Tax_Amount, Total_Price
Dim MySheet, RowCount, i

'Create connection b/w UFT and Excel
Set MyExcel = CreateObject("Excel.Application")
MyExcel.Workbooks.Open "C:\Users\PIIT\Desktop\UFT\BootCamp2\BootCamp2 Question 4.xlsx"
MyExcel.Application.Visible = True
Set MySheet = MyExcel.ActiveWorkbook.Worksheets ("Sheet1")
RowCount = MySheet.UsedRange.Rows.Count

For i = 2 To RowCount
    'Read Values from Excel
    Sale_Amount = MySheet.Cells(i, "A").Value
    Sales_Tax_Rate = MySheet.Cells(i, "B").Value

    'Call Function
    fnTax_Calculator
Next

Function fnTax_Calculator()
    Dim Arry(1)
    'Function should return Sales_Tax_Amount when it is called in the form of %x.xx
    Sales_Tax_Amount = Sale_Amount * Sales_Tax_Rate
    'Function should return Total_Price when it is called in the form of $xxxx.xx
    Total_Price = Sale_Amount + Sales_Tax_Amount

    Arry(0) = Sales_Tax_Amount
    Arry(1) = Total_Price
End Function

一个函数不能有两个返回,但它可以返回一个变量类型,该变量类型可以像数组一样包含多个值。它还可以通过ref将变量传递给它,更改变量值,然后最初调用的子例程可以使用这些更改的值:

返回包含以下两个值的数组:

Sub test()
    myArray = myFunction
    Debug.Print myArray(0), myArray(1)
End Sub
Function myFunction() As Variant
    Dim returnVals(0 To 1) As Double

    returnVals(0) = 1.36
    returnVals(1) = 2.5

    myFunction = returnVals
End Function
运行子例程测试将在即时窗格中打印以下值

 1.36          2.5 
或者,您可以通过byref传入两个变量。函数将更改其值,传递变量的子例程将能够在函数运行后使用更改的值

Sub test()
    Dim var1 As Double
    Dim var2 As Double

    Call mySub(var1, var2)

    Debug.Print var1, var2
End Sub

Function mySub(ByRef variable1 As Double, ByRef variable2 As Double)
    variable1 = 1.36
    variable2 = 2.5
End Function
这将把函数中设置的值打印到即时窗口

您还可以将函数中确定的值存储到工作表中,并在子例程中拾取它们,或者将值存储在全局变量中。但是,这两种情况都应该避免,除非您要反复使用这些值,并且需要它们在vba运行之间保持不变

如果将数组分配给函数名,则函数fnTax\u计算器将“工作”:

Dim a : a = fnTax_Calculator()
WScript.Echo Join(a)

Function fnTax_Calculator()
    Dim Arry(1)
    'Function should return Sales_Tax_Amount when it is called in the form of %x.xx
    'Sales_Tax_Amount = Sale_Amount * Sales_Tax_Rate
    'Function should return Total_Price when it is called in the form of $xxxx.xx
    'Total_Price = Sale_Amount + Sales_Tax_Amount

    Arry(0) = 47 ' Sales_Tax_Amount
    Arry(1) = 11 ' Total_Price
    ' to specify the return value, assign it to the function's name
    fnTax_Calculator = Arry
End Function
输出:

cscript 48654959.vbs
47 11

欢迎来到堆栈溢出。这不是一个code/SQL/regex编写服务,在这里,您发布了一个需求列表和选择的语言,然后一个代码猴子为您编写代码。我们非常乐意提供帮助,但我们希望您首先自己努力解决问题。一旦你这样做了,你可以解释你的问题,包括你工作的相关部分,并提出一个具体的问题,我们会尽力帮助你。祝你好运哦,为了回答你的问题:你用你的键盘。谢谢你的评论。我对堆栈溢出非常陌生。我刚刚加入并发布了一个问题。我不知道它是怎么工作的。无论如何,谢谢当你创建你的帐户时,有人建议你在这里发布之前先阅读网页,了解网站的工作原理。在你问下一个问题之前,我会接受这个建议。你可以更改传入的参数,如果它们是由ref传递的,则只传递一个要更改的参数。或者返回一个两元素数组。希望现在有人能帮我写这个函数。非常感谢你应用你的建议,我的函数运行良好,