解決VBA執行時錯誤13 型別不匹配問題

2021-10-19 01:29:59 字數 1261 閱讀 1135

先說解決方法:找到出錯的語句以後給裡面的引數改型別,使其互相相容。

我這邊出問題的例子參見楊洋老師的書《深入淺出excel vba》第3章,3.2.1節,我原樣敲僅vbe裡面執行就報錯了:

sub scores(

)dim i

for i =3to

5 cells(i,6)

= cells(i,3)

+ cells(i,4)

+ cells(i,5)

cells(i,7)

= cells(i,6)

/3'報錯就在這一行

next i

endsub

我試了下,解決方案有二:

val(cells(i, 6)) 也就是給cells(i, 6) 穿馬甲

或者, in(3)—— 強調下3不是字串是整數()

解決歸解決,但是要搞清楚之前死在**才行,於是我在**裡加了一句顯示資料型別的**

sub scores(

)dim i

for i =3to

5 cells(i,6)

= cells(i,3)

+ cells(i,4)

+ cells(i,5)

msgbox msgbox typename(cells(i,6)

)'讓excel給我跳個彈窗看看這單元格裡面到底什麼資料格式

msgbox msgbox typename(3)

'再看看乙個數字3還能是什麼形式……

cells(i,7)

= cells(i,6)

/3next i

endsub

果然,cells(i,6)的資料型別不是正常的變數或者整數,而是range

而3就是平平無奇的integer

那麼問題來了,range不能被integer除可以理解,給range套上val()完全可以理解,variant和一切都搭嘛……但為什麼給本來就是integer的3外面套上一層int()也可以解決問題不再報錯呢???

當我把兩條msgbox**刪掉,想再看看報錯效果

得到執行時類的泛型型別。

得到反射型別 private class getgenerictype return clazz 類結構 public abstract class basicdaoimplextends hibernatedaosupport implements basicdao 繼承類 resource na...

MFC執行時型別資訊相關類

some guys seem to be unsatisfied to use mfc,they prefer to use pure win32 c but in some domains,mfc or similar framework will be a necessary option.th...

java 型別轉換與編譯錯誤,執行時錯誤

在特定的情況下,我們可以把子類轉換成父類的 例項 這就是向上轉型 相反,我們也可以把父類轉換成子類的 例項 這就是向下轉型。向上轉型是安全的,向下轉型則不然。假設我們有三個類 bird,parrot,swallow,後兩個類繼承了bird類。向上轉型 class bird public void e...