精华内容
下载资源
问答
  • 给Excel VBA 自定义函数添加说明
  • excel VBA 自定义函数的使用

    千次阅读 2019-06-14 15:18:39
    自定义函数要放在模块内才能被使用 放在模块中使用才会出现自动补齐

    自定义的函数要放在模块内才能被使用
    在这里插入图片描述
    在这里插入图片描述

    放在模块中使用才会出现自动补齐
    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • 自定义函数 一、函数使用 自定义的函数如果要在 excel 表格中直接引用的话,需要在模块中定义,实测工作表和工作簿中定义的话都是无法在excel 中直接引用的 如果一个工作簿的自定函数想在另外的excel 文件中使用的...

    自定义函数

    一、函数使用

    • 自定义的函数如果要在 excel 表格中直接引用的话,需要在模块中定义,实测工作表和工作簿中定义的话都是无法在excel 中直接引用的
    • 如果一个工作簿的自定函数想在另外的excel 文件中使用的话,最好的方就通过另存为加载宏的方式,加载宏的具体的用法前面已经说过了这里不再赘述
    • vba 函数可以返回数组,只要将函数名变量赋值为数组即可

    二、函数参数

    • 支持选择参数
    • 支持参数默认值
    • 支持类似java中的可变参
    Function test(Optional ha As Integer = 100)
    '    Application.volatile
        If ha = 0 Then
            MsgBox "ha = 0"
        Else
            MsgBox "ha = " & ha
        End If
    End Function
    
    Sub hello()
        Call test
        Call test(11111)
    End Sub
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Sub hello()
        Call t1(10, 12, 13)
        Call t1(100, 45)
    End Sub
    
    Function t1(ParamArray n())
        Dim sum
        For Each a In n
           sum = sum + a
        Next a
        Debug.Print sum
    End Function
    

    窗口和对话框组件

    一、msgbox

    • 基本的参数
    msgbox (显示内容 ,按钮和图标, 窗口标题, 帮助文件 ,帮助文件编号)
    
    • 几个常用的特殊符号:
    chr(10) 换行、chr(13)回车、chr(9) 制表、space(n)生成空格
    
    • 点击不同按钮对应的返回值
    确定:1
    取消:2
    终止:3
    重试:4
    忽略:5
    是:6
    否:7
    
    Sub t2()
        Debug.Print MsgBox("hello" & Chr(9) & "haha", vbYesNo + vbInformation, "alert")
    End Sub
    

    二、inputbox

    1、概述

    • 使用输入框的话,可以使用inputbox 函数,也可以使用 application 的 inputbox 方法
    • 二者基本的参数就是一致的,app 的 inputbox 方法就是多了指定输入类型的参数而已,简单使用的话 inputbox 函数就够用了
    • 具体的参数的参考如下图
      在这里插入图片描述
    • 最后一个类型参数的具体值参考如下
    0---公式
    1---数字
    2---文本
    4---true or false
    8---range 对象
    16---错误值
    64---数组
    

    2、使用细节

    引用单元格
    • 注意:对象一定要用 set 进行初始化!!!
    Dim ret As Variant
    Set ret = Application.InputBox("请选择一个单元格区域", "输入框", , , , , , 8)
    Debug.Print ret.Address
    
    公式引用
    Sub test()
        Dim ret As Variant
        ret = Application.InputBox("输入一个公式", "提示", , , , , 0)
        Debug.Print TypeName(ret)
        Debug.Print ret
    End Sub
    
    限制输入返回的类型
    • 就是用最后一个参数对输入的类型进行限制
    数值数组
    Sub test10()
        Dim r
        r = Application.InputBox("输入数组", "输入提示", , , , , , 64) 
        Debug.Print r(1, 1)
        Debug.Print TypeName(r)
    End Sub
    

    在这里插入图片描述

    三、Excel 对话框

    1、getOpenFilename

    • 参数参考如下
      在这里插入图片描述
    • 基本的用法如下,最后就是打印出文件名,并不会打开文件
    Sub test()
        f = Application.GetOpenFilename("excel文件,*.xlsx")
        Debug.Print f
    End Sub
    

    2、GetSaveAsFilename

    • 打开另存为的窗口选择文件,本质还是获取文件名,并不会真正保存文件
    Sub test()
        f = Application.GetSaveAsFilename("excel文件,*.xlsx")
        Debug.Print f
    End Sub
    

    3、FileDialog

    • 对比前面两个的优势是可以真正打开文件,而且可以获取文件夹的路径
    Sub UseFileDialogOpen()
     
        Dim lngCount As Long
     
        ' Open the file dialog
        With Application.FileDialog(msoFileDialogOpen)
            .AllowMultiSelect = True
            .Show
     
            ' Display paths of each file selected
            For lngCount = 1 To .SelectedItems.Count
                MsgBox .SelectedItems(lngCount)
            Next lngCount
     
        End With
     
    End Sub
    

    4、Dialogs

    • 该集合代表所有内置对话框,通过指定不同的参数可以显示各种对话框
    Sub test()
    Application.Dialogs(xlDialogOpen).Show
    End Sub
    
    • 参数参考
      在这里插入图片描述

    字符串操作

    一、基本操作

    1、截取

    • left、right、mid、len
    Sub test()
        Dim h  As String
        h = "你的问题就是这样的"
        Debug.Print Left(h, 2)
        Debug.Print Right(h, 2)
        Debug.Print Mid(h, 2, 3)
    End Sub
    
    'output
    你的
    样的
    的问题
    
    • split、join
    • val 函数取字符串中的数字,但是这个函数只能取开头的数字
    Sub test()
        Dim h  As String, h2 As String
        h = "89元的汉堡"
        h2 = "汉堡89元"
        Debug.Print Val(h)
        Debug.Print Val(h2)
    End Sub
    
    'output
    89
    0
    

    2、组合

    • 就是 join 方法和连字符&

    3、查找替换

    • inStr、inStrRev
    Sub test()
        Dim h  As String, h2 As String
        h = "89元的汉堡89"
        Debug.Print InStr(h, 89)
        Debug.Print InStrRev(h, 89)
    End Sub
    
    
    • replace、mid:mid会改变原来的字符串,而replace不会
    Sub test()
        Dim h  As String, h2 As String
        h = "89元的汉堡89"
        Debug.Print Replace(h, 89, 100)
        Mid(h, 1, 3) = 999
        Debug.Print h
    End Sub
    'output
    100元的汉堡100
    999的汉堡89
    

    4、大小写转换

    • Lcase、Ucase、strConv
    Sub test()
        Debug.Print LCase("HELLO")
        Debug.Print UCase("hello")
        Debug.Print StrConv("hello", 1)
        Debug.Print StrConv("HELLO", 2)
        Debug.Print StrConv("hello how are you", 3)
    End Sub
    

    5、空格去除

    • Ltrim、Rtrim、trim

    6、字符数字转换

    • Asc("a")Chr(10)

    7、生成重复字符

    • space(10):10个空格
    • string(10,"*"):10个 *

    二、like 匹配

    • 单个占位符多个占位符*
    • 通配符加[?]转换为普通意义的符号
    • 数字匹配符#
    • 区间匹配[a-zA-z][!a-z]
    • 单个匹配[abcd]
    • 首尾匹配[a]*[p]
    展开全文
  • 自定义函数VBA代码1 有一份数据如下,要添加季度信息,我们用VBA实现自定义季度函数: 打开VBE编辑器,插入一个函数 代码如下: 此时返回excel表格出现了我们自定义的函数如下: 下拉后得到了我们的...

    自定义函数VBA代码1

    有一份数据如下,要添加季度信息,我们用VBA实现自定义季度函数:

    打开VBE编辑器,插入一个函数

    代码如下:

    此时返回excel表格出现了我们自定义的函数如下:

    下拉后得到了我们的月份所对应的季度:

     

    转载于:https://www.cnblogs.com/minirico/p/10069219.html

    展开全文
  • Excel自定义函数智能提示插件及示例
  • 编程中发现一个问题,系统总是提示编译错误,ByRef 参数类型不符, 可实际上参数定义没问题,原因在哪儿呢? 2、问题环境 假定函数定义如下: Function get_kind(addr As String) As Integer ...... End Function ...

    作者:iamlaosong

    1、问题提出

    编程中发现一个问题,系统总是提示编译错误,ByRef 参数类型不符,

    可实际上参数定义没问题,原因在哪儿呢?

    2、问题环境

    假定函数定义如下:

    Function get_kind(addr As String) As Integer
    ......

    End Function

    调用过程:

    Sub check_address()
        Dim addr, new_addr(10000) As String
        

        ......
        addr = new_addr(i)

        ......
        kk = get_kind(addr)
        ......
     End Sub

    3、问题原因

    addr赋值后类型就不对了,虽然都是字符串,数组变量和单个变量不一样,编译系统就是报错。

    找到原因问题就容易解决了:

    方法一:强制转换,用Cstr(addr)

    方法二:换个变量,先赋值myaddr=addr,再调用kk = get_kind(myaddr)

    4、真正原因

    本以为找到了原因,这篇文章成文后很久(2014-7-28),偶然情况下,才找到真正的原因。

    其实上面的方法虽然解决了问题,但没有找到真正的原因,真正的原因是自定义函数的参数必须单独定义,不能多个变量放在一起定义,上面的方法二中myaddr之所以成功,就是因为它是单独定义的,如果后面再加一个变量,同样会出错,也就是说每个参数都要单独定义,一次一个,例如:

    Dim addr As String

    实际实验还发现,不一次一个也可以,但是要把参数变量放在最后,例如:

    Dim str1,str2,addr As String

    即:定义参数变量类型时类型说明必须紧跟在变量之后,中间不能有其它变量。研究发现,VB6.0也存在同样的问题。

    其实真正的原因是没有吃透dim的使用方法。

    dim定义变量类型必须是一个一个的来,放在一起的实际效果是只有最后一个变量定义了类型,前面的变量没有定义类型,就是变体型(variant),例如:

    Dim addr1, addr2, addr3 As String, Num As Integer

    Dim addr1 As String, addr2 As String, addr3 As String, Num As Integer

    上面第一条语句中的addr1和addr2就是变体型(variant),addr3是字符型。正确的写法是第二行语句。

    有这样的误解是因为最早用C语言的时候都是一行定义多个变量,想当然的以为VB也是这样。

     

     

    展开全文
  • VBA函数定义及说明

    千次阅读 2020-06-24 11:18:28
    函数定义,函数返回对象,默认参数,不定长参数
  • vba里使用python自定义函数

    千次阅读 2018-12-21 22:49:51
    今天讲一下怎么在vba里面使用python的自定义函数。在vba板块提下python主要是python的包很多。对于我们来说,直接拿轮子过来用用肯定是很好的事情,复杂的原理,背后的算法与我无关。沟通python和excel主要是通过一个名...
  • VBA 自定义对话框

    2020-08-17 22:09:45
    今天主要讲讲自定义对话框这一章,中间鸽了一小部分的函数过程,WindowsAPI、连接数据库的内容还没学,后续再更新。 一、inputbox inputbox输入框之前已经用过了,但是除了之前VBA中用的inputbox之外,还有...
  • 我们知道,Excel中有很多内置的函数,比如求和,求平均,字符串操作函数,金融函数等等。在有些时候,结合业务要求,这些函数可能不能满足我们的需求,比如我想要一个函数能够从WebService上
  • http://zhidao.baidu.com/question/205789958.html
  • vba里使用python自定义函数(xlwings)

    千次阅读 2020-07-14 10:18:03
    今天讲一下怎么在vba里面使用python的自定义函数。在vba板块提下python主要是python的包很多。对于我们来说,直接拿轮子过来用用肯定是很好的事情,复杂的原理,背后的算法与我无关。通过沟通python和excel主要是通过...
  • ExcelDna.IntelliSense.xll 以及 ExcelDna.IntelliSense64.xll 是两个函数参数智能提示加载项,分别用于32和64位Excel。在Excel的加载项对话框中添加这些文件就可以出现参数智能提示。 ExcelDna.IntelliSense.dll ...
  • VBA自定义数据类型(结构体使用)

    万次阅读 2017-08-30 17:28:57
    VBA中结构体不能定义在函数或者过程中,要定义在模块中,否则会提示无效内部过程,或者类型未定义 语法 Type InPutStruct Name As String Id As Integer End TypeDim InPutStructRow As InPutStruct InputStruct...
  • 目录 TEXTJOIN函数: ...4、这时候你需要点击启用宏(自定义函数需要用到宏,但是有一部分计算机病毒可以通过这种方式入侵他人的计算机,所有微软会发出警告),但是,我的文件完全绿色无毒,请放...
  • 此模块是声音提示,H1:H20000设置结果使用上自定义的SYTS()就会发出指定的声音,自定义函数使用方法: 比如:SYTS(“随便填写”) 状态函数公式: H2填写: =IFERROR(IF(A2<>"",IF(C2="",“待更新”,IF(-(G2-C2...
  • 自定义函数可使用多个正则表达式对目标单元格进行多次匹配尝试,如匹配成功,将停止尝试匹配其他正则表达式,并且使用该正则表达式相对应的替换表达式进行替换,返回替换结果。 您可以直接下载包含该函数代码的...
  • 01两种自定义函数及语法虽然Python的标准库中自带了很多“方法”或函数,并且第三方模块也提供了更多的现成"方法"与函数,但有时还是不能满足需求,这时就需要自定义函数了...
  • Excel 2007出于安全的考虑,对文件名作了处理,以xlsx为后缀名的文件不包含任何宏或者VBA代码,而以xlsm为后缀名的文件才可以enable macro。所以如果要为Excel 2007撰写任何VBA代码,都需要保存为xlsm的类型,而不要...
  • 5 用自定义函数验证上述内容 如果是多个参数的,可以不带括号,如果带括号,一般需要用call  如果是是带括号的,一般是需要调用 函数的值。 call sub/function 是种单独的用法,一般单独使用 Sub test...
  • 大家可能用过Excel本身的中英文自动翻译的函数公式,因为2013版本后增加了三个web函数,让Excel可以调用网络上的一些数据。函数公式为(其中A1为需要翻译的单元格): =FILTERXML(WEBSERVICE(...
  • 1、函数语法 CREATE OR REPLACE FUNCTION 函数名(参数1 模式 参数类型) RETURN 返回值类型 AS 变量1 变量类型; 变量2 变量类型; BEGIN 函数体; END 函数名; 2、定义函数 2.1以游标形式返回结果集 --创建...
  • 概述:接上一章 中篇, 本节涉及是Sub Function 等过程和函数 8、Sub 过程, 基本的程序单元 过程处理事情的步骤,例如:坐公交 , 上车-》刷卡-》找位子-》坐下 8.1、 关于VBA过程 什么是VBA过程 其实你要...
  • EXCEL自定义函数

    千次阅读 2013-05-27 15:09:04
    编写自定义函数需要一定的VBA基础,但完成后,就可以像使用内置函数一样方便了,任何人都可以使用。 工具/原料 excel 步骤/方法 下面通过一个例子来学习简单
  •  Excel自带很多函数供使用,但有些问题用内置函数解决起来很复杂,甚至是无能为力,这时就可以利用VBA开发自定义函数。 第二,excel如何添加自定义函数  excel自定义函数是利用VBA二次开发功能所编写的函数程序...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,663
精华内容 665
关键字:

vba自定义函数提示