精华内容
下载资源
问答
  • Excel VBA 函数返回值

    千次阅读 2020-02-11 13:29:52
    Excel VBA 函数返回值 Sub 定义一个过程 VB的函数定义格式与C有很大区别: 格式: Sub 过程名(参数列表 ... ) 过程体 End Sub Function 定义一个函数 官方文档 ???? Microsoft Docs | 编写 Function 过程 Function...

    Excel VBA 函数返回值

    Sub 定义一个过程

    VB的函数定义格式与C有很大区别:
    格式:

    Sub 过程名(参数列表 ... )
    	过程体
    End Sub
    

    Function 定义一个函数

    官方文档 🚀 Microsoft Docs | 编写 Function 过程

    Function 函数名(参数列表 ... )
    	函数体
    	函数名 = 返回值
    End Function
    

    实例代码

    Sub Main() 
     temp = Application.InputBox(Prompt:= _ 
     "Please enter the temperature in degrees F.", Type:=1) 
     MsgBox "The temperature is " & Celsius(temp) & " degrees C." 
    End Sub 
     
    Function Celsius(fDegrees) 
     Celsius = (fDegrees - 32) * 5 / 9 
    End Function
    

    调用Sub过程或者Function函数

    调用函数时,有两种形式:

    1. 可以直接将参数放在函数名后,英文逗号 ‘,’ 作为参数分隔符,不需要加圆括号。
      此种调用方式,将舍弃函数返回值。
    Sub Main() 
     MultiBeep 56 
     Message 
    End Sub 
     
    Sub MultiBeep(numbeeps) 
     For counter = 1 To numbeeps 
     Beep 
     Next counter 
    End Sub 
     
    Sub Message() 
     MsgBox "Time to take a break!" 
    End Sub
    
    1. 使用类c语言的方式,参数后加圆括号,用以包含参数。
    Sub Main() 
     Answer3 = MsgBox("Are you happy with your salary?", 4, "Question 3") 
     HouseCalc 99800, 43100 
     Call HouseCalc(380950, 49500) 
    End Sub 
     
    Sub HouseCalc(price As Single, wage As Single) 
     If 2.5 * wage <= 0.8 * price Then 
     MsgBox "You cannot afford this house." 
     Else 
     MsgBox "This house is affordable." 
     End If 
    End Sub
    
    1. 函数名前,可加Call关键字,亦可省略。

    References:

    Microsoft Docs | Calling Sub and Function procedures

    展开全文
  • 1 inputbox()函数值 1.1inputbox() 的返回值 inputbox()的返回值,... 如果用户单击 Cancel,则此函数返回一个长度为零的字符串 ("")。 2 inputbox的后续处理 2.1把inputbox返回的值,处理为数字等 如果是...

    1 inputbox()函数值

     

    1.1inputbox() 的返回值

    • inputbox()的返回值,String 类型
    • 在一对话框来中显示提示,等待用户输入正文或按下按钮,并返回包含文本框内容的 String。
    • 如果用户单击 Cancel,则此函数返回一个长度为零的字符串 ("")。

     

    2  inputbox的后续处理

    2.1 把inputbox返回的值,处理为数字等

    • 如果是一个语句默认会返回void? false
    • 如果是字符串相加是连接
    • int()  cint()  val() 功能类似,都可以把  “数字类字符串” 转成 数字

     

    Sub cs2()
    
    x1 = InputBox("请输入一个数字")
    x2 = InputBox("请输入一个数字")
    
    Debug.Print "x1+x2=" & x1 + x2
    Debug.Print "x1+x2=" & Val(x1) + Val(x2)
    Debug.Print "x1+x2=" & Int(x1) + Int(x2)
    Debug.Print "x1+x2=" & CInt(x1) + CInt(x2)
    Debug.Print "x1+x2=" & Sum = Val(x1) + Val(x2)
    
    End Sub
    

     

     

     

    别人写的例子

    Sub Judge()
    Dim x, y As Integer
    x = GetNum("X")
    y = GetNum("Y")
    If x < y Then
    MsgBox "X < Y"
    Else
    MsgBox "X >= Y"
    End If
    End Sub
    Function GetNum(s) As Integer
    Dim str As String
    Do While str = ""
    str = InputBox("", "请输入数" + s)
    If Not IsNumeric(str) Then
    MsgBox "你输入的不是整数"
    str = ""
    Else
    GetNum = CInt(str)
    End If
    Loop
    End Function

     

    3 inputbox 可以同时要求输入多个参数吗?

     

    3.1 要求输入参数必须是有分隔符

    • 输入多个参数,中间有 , 分隔
    • 但是这个不能限制玩家不按要求输入
    • 如果按要求输入可以按 split() 分隔

     

    Sub cs3()
    
    i1 = InputBox("请输入")
    
    arr1 = Split(i1, ",")
    
    For Each i In arr1
      Debug.Print i
    Next
    
    End Sub
    

     

     

     

    inputbox() 函数 和application.inputbox() 方法


    inputbox() 函数
    InputBox(Prompt[,Title][,Default][,Xpos][,Ypos][,Helpfile,Context])
    application.inputbox() 方法
    Object.InputBox(Prompt,Title,Default,Left,Top,HelpFile,HelpContextID,Type)


    inputbox() 函数
    (1)如果同时提供了Helpfile与Context参数,可以按F1键来查看与Context相应的帮助主题,Excel通常会在输入框中自动添加一个帮助(Help)按钮。
    (2)如果单击确定(OK)或按下ENTER键,则InputBox函数返回文本框中的内容;如果单击取消(Cancel),则此函数返回一个长度为零的字符串("")。
    (3)如果要输入多个参数并省略中间的某些参数,则必须在相应位置加入逗号分界符。
    (4)InputBox函数返回的是一个字符串,若需要得到数值,则需要使用Val函数将字符串转换为一个值。


    application.inputbox() 方法
    若使用适当代码的和,则返回多种数据类型。若要显示一个可以接受文本或数字的输入框,则将Type设置为3(即1和2之和,或者数字加上文本);若Type设置为8,那么可以输入一个单元格或单元格区域,或者用鼠标在工作表中的选择某个单元格区域。

    https://blog.csdn.net/ZOU_SEAFARER/article/details/1495674
    https://blog.csdn.net/iamlaosong/article/details/53376336
    http://www.360doc.com/content/18/0611/00/22637415_761312889.shtml

     

     

    Sub ponyma1()
    Dim in2 As Object
    
    in1 = Application.InputBox("请输入数字", "输入窗口", , , , , 1)
    Debug.Print in1 + 1
    
    
    Set in2 = Application.InputBox(prompt:="请选择几个单元格", Title:="输入窗", Type:=8)
    in2.Interior.ColorIndex = 3
    
    End Sub

     

    选择的range区域会变红

     

     

    展开全文
  • 只是将返回值设置为函数名称仍然与Java(或其他) return 语句完全不同,因为在java中, return 退出函数,如下所示:public int test(int x) {if (x == 1) {return 1; // exits immediately}// still here? return 0 ...

    只是将返回值设置为函数名称仍然与Java(或其他) return 语句完全不同,因为在java中, return 退出函数,如下所示:

    public int test(int x) {

    if (x == 1) {

    return 1; // exits immediately

    }

    // still here? return 0 as default.

    return 0;

    }

    在VB中,如果未在函数末尾设置返回值, exact 等效项将占用两行 . 所以,在VB中,确切的推论看起来像这样:

    Public Function test(ByVal x As Integer) As Integer

    If x = 1 Then

    test = 1 ' does not exit immediately. You must manually terminate...

    Exit Function ' to exit

    End If

    ' Still here? return 0 as default.

    test = 0

    ' no need for an Exit Function because we're about to exit anyway.

    End Function

    既然如此,那么知道你可以像使用方法中的任何其他变量一样使用return变量也是很好的 . 像这样:

    Public Function test(ByVal x As Integer) As Integer

    test = x '

    If test <> 1 Then ' Test the currently set return value

    test = 0 ' Reset the return value to a *new* value

    End If

    End Function

    或者,返回变量如何工作的极端例子(但不一定是你应该如何实际编码的一个很好的例子) - 那个会让你夜不能寐的一个例子:

    Public Function test(ByVal x As Integer) As Integer

    test = x '

    If test > 0 Then

    ' RECURSIVE CALL...WITH THE RETURN VALUE AS AN ARGUMENT,

    ' AND THE RESULT RESETTING THE RETURN VALUE.

    test = test(test - 1)

    End If

    End Function

    展开全文
  • 关注@悟禅禅,为您解决#Excel#和#VBA#的难题 Excel以表格和图形的方式来量化和展示工作相关的数据,使用户能够以宏观和微观的视角去分析以往并演算未来。然而,每当经验浅薄者打开Excel的界面,又总被这铺天盖地又...

    关注@悟禅禅,为您解决#Excel#和#VBA#的难题

    Excel以表格和图形的方式来量化和展示工作相关的数据,使用户能够以宏观和微观的视角去分析以往并演算未来。然而,每当经验浅薄者打开Excel的界面,又总被这铺天盖地又密密麻麻的表格搞的无从下手。最终只能把Excel当作便签纸来记流水账。用着别扭,看着也迷糊。

    b714d61cfae84c4126592f25158cab12.png

    头@条@号“悟禅禅”原创

    那么Excel与便签纸又有什么区别呢,最重要的区别就是Excel可以实时响应用户的指令。Excel中的“函数”就是用户最忠实的“保姆”,它可以为用户取得想要得到的信息。也就是说,当“雇主”请求“保姆”去执行一个任务的时候,最终“保姆”会把任务的结果反馈给雇主。“函数”作为“保姆”把“返回值”当作结果反馈给作为“雇主”的用户。

    75b8254b86f6b4ff3f7fd07b7eacead2.png

    わたしは函数と申します

    比如生活中如果有人问我“悟禅禅,今天几月几号?”,我会回答“8月23日”。以计算机系统的角度来看“今天几月几号?”这个问题就是一个“函数”。通过这个作为函数的问题,提问者得到了当日的日期“8月23日”作为“返回值”。

    e9cac5cdae11042882a75b0160856550.png

    头@条@号“悟禅禅”原创

    在Excel中想知道“今天几月几号?”,只需在任意单元格中输入“=TODAY()”,单元格便会显示“2020/8/23”。如果第二天再问我“今天几月几号?”,根据我当时的状态可我不一定会回答正确,也许忘记了已经过了一天,也许又要思考半天才会答复。但如果再向Excel的单元格中输入“=TODAY()”,单元格会立即显示一个正确的日期“2020/8/24”。也就是说函数的返回值并不是一成不变的,它一定会根据时机向主人提供一个准确可靠的“答案”。在这个简单的例子里,函数“TODAY()”就是用户一个“保姆”,为用户提供当日的日期。而且只要用户的命令正确,“函数”的“返回值”就不会错。

    9e95336456856457eaf30ffc54111ad2.png

    头@条@号“悟禅禅”原创

    所以“函数”并不难理解,难的是用户是否清楚自己要什么。比如数学计算时用“SUM(),COUNT(),AVERAGE()”等;截取字符用“LEFT(),RIGHT(),MID()”等;日期计算用“DATE(),YEAR(),MONTH(),DAY()”等;查找定位用“FIND(),SEARCH(),INDEX(),MATCH()”等。在痛苦中制表的时候,这些功能强大而又简单实时的函数是否曾在脑海里浮现呢?

    函数的使用”也是用户向Excel提问的过程,如果不善于向Excel提问,就难于领悟函数使用的精髓。

    a63ef1d378bde5bd97abf1379f95531f.png

    头@条@号“悟禅禅”原创

    试想,当想知道表格中姓名的“姓氏”的时候该用什么函数?当想知道当月销售总额和每月平均额的时候又该用什么函数?函数的使用经验,就是用这些零碎的经验积累出来的。学会用函数去挖掘庞大数据中的碎片,再用这些细小的碎片去拼凑出完美的表格。化繁为简,化整为零,让我们在日常的制表工作中共同精进。

    方寸之间见天地,Excel的小格子非常值得一起去学习研究。如果想对一些常用函数做些了解,请您阅读我的其它文章:

    《利用Today()函数配合其它日期函数,深入了解Excel中的日期计算 》

    《善用Excel函数的LOOKUP()家族,把单薄的数据拼凑成丰满的表格 》

    《Excel中的坐标分4种,利用ADDRESS()函数,灵活定位每一个单元格 》

    《Excel中函数中少有人使用的CELL()函数真可谓既低调又高效 》

    关注@悟禅禅,为您解决Excel和VBA的难题

    #Excel技巧##财务Excel表格##科技头条#

    展开全文
  • 学习Excel技术,关注微信公众号:excelperfect在VBA中,InStr函数是一个非常有用的函数,可用于查找某字符串在另一个字符串中第一次出现的位置。InStr函数的语法如下图1所示:图1其中:1.参数Start,可选,指定搜索...
  • 展开全部1、直接调用或636f70793231313335323631343130323136353331333431373865者call 过程名 call 函数名就可以了,比如Private Sub CommandButton1_Click()MsgBox "你调用了CommandButton1_Click过程"End Sub...
  • 自定义函数可以做什么?可以让你的表格为所欲为!这篇文章教你如何掌握自定义函数函数是大家在使用 Excel 工作的过程中经常会用到的。比如大家已经很熟悉了的求和函数 SUM,计数函数 COUNTA 等等。Excel 中自身...
  • VBA定义函数计算 x + y如果用宏,要把...VBA函数就不用Function MyAddTwoNumber(x As Double, y As Double) Dim z z = x + y MyAddTwoNumber = z End FunctionPython的UDF如果函数复杂,Python写起来可能...
  • excel vba中调用SQLConfigDataSource函数返回值总是FALSE,是哪里出错了?请高手指教! 代码如下: Private Const ODBC_ADD_SYS_DSN = 4 Private Declare PtrSafe Function SQLConfigDataSource Lib "odbccp32....
  • 学习Excel技术,关注微信公众号:excelperfectFunction过程能够让我们自定义可以返回值函数,减少复杂性,扩展功能,提高效率。在使用VBA编写自定义函数时,了解一些注意事项,掌握一些技术技巧,能够帮助我们顺利...
  • 点击开发工具——visual basic(如果没有这个菜单,点击文件——选项——自定义功能区——右边窗口勾上开发工具)弹出编辑窗口,点击左边vbaproject下的模块进入编辑界面我们可以自定义一个函数count0,参数为需要...
  • 之前群里讨论过,为什么基础Excel函数教程之类的会成为月经首页热门,得到的结论是:基础用户比较多,看到了就想着说,以后说不定有用吧,点了收藏。所以更高阶一点的东西,比如VBA,讨论结果是不会有什么热度,因为...
  • 这里代码实现不只是实现函数返回值。 借助这个思想,可以实现Excel宏VBA被VBScript代码调用,为什么要用VBS去调用VBA呢? 这段时间碰到了一个棘手的问题,Excel中保存有差不多10万条数据,我想通过字典的形式对...
  • 前者是通常意义上的过程,后者经常称之为函数过程。首先我们分析一下两者的特点:1 Sub过程:总是以“sub 过程名()”开头,以“End Sub”结尾,一个过程就是执行某项动作的一套指令,Sub过程不...
  • 1、子程序和函数   1)   如果过程适用于整个应用程序,则范围为公共,否则为私有 如果是静态变量,则过程在反复调用时,其内部变量值仍保持 调用这些过程的方法是 call 过程名 2)option Explicit语句表示 ...
  • 学习Excel技术,关注微信公众号:...在Excel中,使用VBA编写用户自定义函数很容易。例如,想要写一个自定义函数,计算单元格区域的平均值,但要排除非数字或小于误差值的单元格。我们可以这样编写代码:Function...
  • 用Index拆分数组数组的拆分在VBA中是一个难题,如果是按行拆分数组,除了用循环外也只能借用API函数完成了。幸好我们可以借用工作表函数index达到按列拆分数组。语法:数组形式INDEX(array,row_num,column_num)参数...
  • VBA用户自定义函数

    千次阅读 2018-12-08 22:30:53
    函数是一组可重复使用的代码,...一个VBA函数可以有一个可选的return语句。如果要从函数返回值,则可使用return语句。 例如,可以在一个函数中传递两个数字,然后从函数中返回它们的乘积。 注 - 函数可以返回由...
  • ExcelVBA函数

    2020-06-04 16:30:35
    2、函数过程(函数)执行具体任务并返回值。它们以关键字Function开头和关键字EndFunction结束。在本章中,你将创建你的第一个函数过程。函数过程可以从子程序里执行,也可以从工作表里访问,就像Excel的内置函数...
  • Sub 定义时无需定义返回值类型,而 Function 一般需要用 “As 数据类型” 定义函数返回值类型。Sub 中没有对过程名赋值的语句,而 Function 中有对函数名赋值的语句,一般在函数最后返回值,格式如下:Set ...
  • 一 自定义函数 1.1 什么是EXCEL 的自定义函数 VBA里用户自己写了一些函数,这些非 EXCEL 和 VBA 内置的函数,也可以在EXCEL直接使用 VBA的函数在 EXCEL里如何... 函数返回值错误:是 函数调用后,返回值报错了...
  • 函数是一组可重复使用的代码,可以在程序中的任何地方调用。这消除了一遍又一遍地编写相同的代码的需要。...一个VBA函数可以有一个可选的return语句。如果要从函数返回值,则可使用return语句。例如,可以在一个函数...
  • VBA function函数

    2012-04-18 02:21:22
    SUB可以使用可选参数,optional 参数 在程序中可以使用isMissing来判断 Sub sub_name(optional val1) function function_name(optional ...function 是可以返回值的过程 function function_name parameter f...
  • 在工作中,为提高excel处理效率会写一些vba宏,有时还需要调用外部java程序(比如访问webservice接口的java程序),下面的事例可做参考一、编写简单的java调试程序public ...}}二、在excel中编写vba调试函数Sub 按钮1...

空空如也

空空如也

1 2 3 4 5 6
收藏数 106
精华内容 42
关键字:

vba函数返回值