小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

VBA代碼如何快速修改為VB.NET代碼 VSTO火箭速成班

 昵稱72339616 2022-08-26 發(fā)布于湖北

小目標(biāo)

學(xué)會一般VBA代碼修改為VB.NET的一般技巧

視頻講解

1.6 VBA代碼如何快速修改為VB.NET代碼

請點(diǎn)擊原文鏈接查看視頻

VBA寫一段代碼 在VS測試框架里插入模塊寫入代碼

變量必須定義 可以不定義類型 但是必須定義

VBA里變量可以不定義直接使用,VB.NET必須定義,不過也可以不定義類型
直接Dim x 定義名稱即可 大部分情況下 都可以不定義類型
可以定義的時候直接賦值比如
Dim x=1 這點(diǎn)比VBA方便 VBA必須寫2行

常見的Excel對象類型加Excel.前綴 形如

Excel.Range  Excel.Worksheet Excel.Workbook
如果是不需要智能提示 直接改為Object也可以
VBA中的 dim r as Range 改為  dim r as Excel.range

單行定義多個變量 注意類型會以最后一個為準(zhǔn)

處理方式為,無類型和有類型混合定義的行,帶類型的單獨(dú)提到新行定義
比如在vba中 可以這樣定義

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
由于在VB.NET里一切都是對象 ,所以賦值語句一視同仁, Set語句再也不需要了,直接賦值即可。

過程名(參數(shù)1,參數(shù)2)方式 必須加上括號

在vba中調(diào)用子函數(shù)如下形式








Sub TestSub()    子函數(shù) 1End Sub
Sub 子函數(shù)(x)    MsgBox xEnd Sub

以上是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
因為在vb.net里變量默認(rèn)就是object類型





dim x as Objectdim x

數(shù)據(jù)類型的基本對應(yīng)關(guān)系 實際使用中可不定義類型

如果在VBA中聲明了具體類型 ,請參考下表在VB.NET中做出相應(yīng)修改

一般來說 ,新手不用聲明類型 ,在強(qiáng)大的VS自動類型推斷能力下, 99%比你自己聲明類型,運(yùn)行速度更快
實際使用中 不用帶System.的前綴
VBA基本類型 .NET類或結(jié)構(gòu)

參數(shù)參數(shù)默認(rèn)按值Byval傳遞 要按引用傳遞需要指定ByRef

在VBA的函數(shù)參數(shù)里,默認(rèn)都為ByRef引用傳遞,到了VB.NET注意默認(rèn)都是ByVal傳遞,如果希望對基本數(shù)據(jù)類型在傳遞過程中進(jìn)行修改,那需要在參數(shù)前加ByRef聲明


如上圖所示 在VB.NET里參數(shù)聲明要改為




Sub 改變參數(shù)(ByRef x, y)    x = x + y 'x會被子函數(shù)改變End Sub

Excel枚舉值的處理方式

在Excel880VSTO框架阿加持下 大部分枚舉值可不用修改直接復(fù)制到VS直接使用
少部分枚舉值如果提示未定義 在VBA立即窗口 ?枚舉值 輸出具體值 代碼中替換即可
更多細(xì)節(jié)在后續(xù)課程實踐中一一解決

作業(yè)

錄制一個VBA宏, 選中一片區(qū)域, 填充隨機(jī)數(shù),填充底色加邊框,然后修改為VB.NET代碼調(diào)試運(yùn)行

鄭廣學(xué)VSTO教程購買方式

淘寶下單地址(支持花唄) 

excel880.taobao.com
鄭廣學(xué)VSTO課程云課堂網(wǎng)址

v.excel880.com

登陸后可免費(fèi)試學(xué)前3節(jié)

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多