閱文時長 | | 0.34分鍾 | 字數統計 | | 550.4字符 |
主要內容 | | 1、引言&背景 2、分析&解決原理 3、聲明與參考資料 | ||
『VBA·編譯錯誤:ByRef參數類型不符』 | |||
編寫人 | | SCscHero | 編寫時間 | | 2021/8/19 AM12:3 |
文章類型 | | 系列 | 完成度 | | 已完成 |
座右銘 | 每一個偉大的事業,都有一個微不足道的開始。 |
一、引言&背景 完成度:100%
a) 應對問題
博主在Word VBA中今天寫代碼的時候,發現報了個編譯的錯誤,如下圖。檢查了一下參數應該是正確的。

b) 應對場景
- 博主是調用了一個有參函數,報的如圖的錯誤,有參函數接收的是一個String類型的參數。
- 在調用有參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即可。