zoukankan      html  css  js  c++  java
  • VBA·编译错误:ByRef参数类型不符

    阅文时长 | 0.34分钟 字数统计 | 550.4字符
    主要内容 | 1、引言&背景 2、分析&解决原理 3、声明与参考资料
    『VBA·编译错误:ByRef参数类型不符』
    编写人 | SCscHero 编写时间 | 2021/8/19 AM12:3
    文章类型 | 系列 完成度 | 已完成
    座右铭 每一个伟大的事业,都有一个微不足道的开始。

    一、引言&背景   完成度:100%

    a) 应对问题

    博主在Word VBA中今天写代码的时候,发现报了个编译的错误,如下图。检查了一下参数应该是正确的。

    b) 应对场景

    1. 博主是调用了一个有参函数,报的如图的错误,有参函数接收的是一个String类型的参数。
    2. 在调用有参Function或Sub的时候。

    c) 解决方法

    通过第二章节的理解,在调用有参Function或Sub之前,再使用Dim关键字声明一个临时变量接收,使用此临时变量传参即可

    二、分析&解决原理   完成度:100%

    a) Dim的使用理解

    在Google了一下后,博主发现问题出在调用有参的Function或者Sub的时候,传入的参数一定是需要使用Dim关键字声明类型的。先说下Dim声明关键字类型的一个坑。以下为三种声明多变量的常用写法。

    '写法1:多行分别声明变量
    Dim strV1 As String
    Dim strV2 As String
    Dim strV3 As String
    
    '写法2:单行声明变量,单独声明类型
    Dim strV1 As String,strV2 As String,strV3 As String
    
    '【有隐患】写法3:单行声明变量,只声明一个类型
    Dim strV1,strV2,strV3 As String
    

    此三种写法,前两种是等价的。但第三种,实际上strV1,strV2没有被声明变量。

    b) 误区

    开始学习VBA的时候,对VBA中一些非对象的数据类型,可以直接声明,可以省略Dim声明。写法也习惯了,没意识到这个错误。但即使是非对象数据类型String,在调用之前也是需要声明的

    三、声明与参考资料   完成度:100%

    原创博文,未经许可请勿转载。

    如有帮助,欢迎点赞、收藏、关注。如有问题,请评论留言!如需与博主联系的,直接博客私信SCscHero即可。

  • 相关阅读:
    关闭浏览器清除cookie
    JSONP跨域请求数据报错 “Unexpected token :”的解决办法
    HTTP请求方法
    Html 中判断某个class的个数
    将div标签中的table水平居中
    js阻止事件冒泡
    Vue中V-bind的使用。为何标签中style="height:90px"也需要写为V-bind:style="height:90px",哪些属性需要绑定?哪些属性不需要绑定?
    css中 !important的作用。
    Notification通知
    DataAdapter中DeleteCommand和UpdateCommand
  • 原文地址:https://www.cnblogs.com/SCscHero/p/15159533.html
Copyright © 2011-2022 走看看