小目標(biāo)學(xué)會一般VBA代碼修改為VB.NET的一般技巧 視頻講解 1.6 VBA代碼如何快速修改為VB.NET代碼 請點(diǎn)擊原文鏈接查看視頻 VBA寫一段代碼 在VS測試框架里插入模塊寫入代碼變量必須定義 可以不定義類型 但是必須定義VBA里變量可以不定義直接使用,VB.NET必須定義,不過也可以不定義類型 常見的Excel對象類型加Excel.前綴 形如Excel.Range Excel.Worksheet Excel.Workbook 單行定義多個變量 注意類型會以最后一個為準(zhǔn)處理方式為,無類型和有類型混合定義的行,帶類型的單獨(dú)提到新行定義 Dim i,j,k,s as String 在VB.NET中你這樣復(fù)制過去不會報錯,但是運(yùn)行的時候可能出錯,因為它會把i,j,k也全部定義為String類型,在VB.net中要修改為下面的形式,不同的數(shù)據(jù)類型要換一行定義 Dim i,j,kDim s as String Range=值以及 變量=Range 的方式 必須加Range.value在VBA中,我們習(xí)慣了Range類型的默認(rèn)值比如如下代碼 range("A1")=1x=range("A1")cells(1,1)=1x=cells(1,1) 這些vba代碼復(fù)制到VB.NET不會報錯 但是運(yùn)行時會出錯 因為在VB.net沒有默認(rèn)的.value屬性,我們必須加上.value 修改如下 range("A1").value=1x=range("A1").valuecells(1,1).value=1x=cells(1,1).value 這個情況還要衍生到窗體控件里 比如我們常用的 x=Textbox1,實際上是取的.text默認(rèn)屬性,在.net里我們都要加上 x=Textbox1.text Set 變量=對象 不再需要Set語句 在VBA中我們的對象變量賦值要加Set r=range 過程名(參數(shù)1,參數(shù)2)方式 必須加上括號在vba中調(diào)用子函數(shù)如下形式
以上是VBA子函數(shù)子過程的調(diào)用形式, 當(dāng)不需要返回值的時候,我們是不帶括號的,在VB.NET里統(tǒng)一只要帶參數(shù)的函數(shù)和過程調(diào)用,無論是否有返回值,都要加上括號如下 '在VB.NETSub TestSub()子函數(shù)(1) '這樣在vba里是無法運(yùn)行的 在VB.NET里必須加括號End Sub Variant類型全部改為Object類型如果在VBA里顯示聲明了變體類型 dim x as Variant 在VB.NET中改為Object 或者直接刪除 as Variant
數(shù)據(jù)類型的基本對應(yīng)關(guān)系 實際使用中可不定義類型如果在VBA中聲明了具體類型 ,請參考下表在VB.NET中做出相應(yīng)修改 一般來說 ,新手不用聲明類型 ,在強(qiáng)大的VS自動類型推斷能力下, 99%比你自己聲明類型,運(yùn)行速度更快 參數(shù)參數(shù)默認(rèn)按值Byval傳遞 要按引用傳遞需要指定ByRef在VBA的函數(shù)參數(shù)里,默認(rèn)都為ByRef引用傳遞,到了VB.NET注意默認(rèn)都是ByVal傳遞,如果希望對基本數(shù)據(jù)類型在傳遞過程中進(jìn)行修改,那需要在參數(shù)前加ByRef聲明
Sub 改變參數(shù)(ByRef x, y) x = x + y 'x會被子函數(shù)改變End Sub Excel枚舉值的處理方式在Excel880VSTO框架阿加持下 大部分枚舉值可不用修改直接復(fù)制到VS直接使用 作業(yè)錄制一個VBA宏, 選中一片區(qū)域, 填充隨機(jī)數(shù),填充底色加邊框,然后修改為VB.NET代碼調(diào)試運(yùn)行 鄭廣學(xué)VSTO教程購買方式淘寶下單地址(支持花唄) excel880.taobao.com v.excel880.com 登陸后可免費(fèi)試學(xué)前3節(jié) |
|
來自: 昵稱72339616 > 《待分類》