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即可。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM