分享

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

 郑广学老师 2022-08-26 发布于湖北

小目标

学会一般VBA代码修改为VB.NET的一般技巧

视频讲解

1.6 VBA代码如何快速修改为VB.NET代码

请点击原文链接查看视频

VBA写一段代码 在VS测试框架里插入模块写入代码

变量必须定义 可以不定义类型 但是必须定义

VBA里变量可以不定义直接使用,VB.NET必须定义,不过也可以不定义类型
直接Dim x 定义名称即可 大部分情况下 都可以不定义类型
可以定义的时候直接赋值比如
Dim x=1 这点比VBA方便 VBA必须写2行

常见的Excel对象类型加Excel.前缀 形如

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

单行定义多个变量 注意类型会以最后一个为准

处理方式为,无类型和有类型混合定义的行,带类型的单独提到新行定义
比如在vba中 可以这样定义

Dim i,j,k,s as String

在VB.NET中你这样复制过去不会报错,但是运行的时候可能出错,因为它会把i,j,k也全部定义为String类型,在VB.net中要修改为下面的形式,不同的数据类型要换一行定义



Dim i,j,kDim s as String

Range=值以及 变量=Range 的方式 必须加Range.value

在VBA中,我们习惯了Range类型的默认值比如如下代码





range("A1")=1x=range("A1")cells(1,1)=1x=cells(1,1)

这些vba代码复制到VB.NET不会报错 但是运行时会出错 因为在VB.net没有默认的.value属性,我们必须加上.value 修改如下





range("A1").value=1x=range("A1").valuecells(1,1).value=1x=cells(1,1).value

这个情况还要衍生到窗体控件里 比如我们常用的 x=Textbox1,实际上是取的.text默认属性,在.net里我们都要加上 x=Textbox1.text


Set 变量=对象 不再需要Set语句

在VBA中我们的对象变量赋值要加Set r=range
由于在VB.NET里一切都是对象 ,所以赋值语句一视同仁, Set语句再也不需要了,直接赋值即可。

过程名(参数1,参数2)方式 必须加上括号

在vba中调用子函数如下形式








Sub TestSub()    子函数 1End Sub
Sub 子函数(x)    MsgBox xEnd Sub

以上是VBA子函数子过程的调用形式, 当不需要返回值的时候,我们是不带括号的,在VB.NET里统一只要带参数的函数和过程调用,无论是否有返回值,都要加上括号如下





'在VB.NETSub TestSub()子函数(1) '这样在vba里是无法运行的 在VB.NET里必须加括号End Sub

Variant类型全部改为Object类型

如果在VBA里显示声明了变体类型


dim x as Variant

在VB.NET中改为Object 或者直接删除 as Variant
因为在vb.net里变量默认就是object类型





dim x as Objectdim x

数据类型的基本对应关系 实际使用中可不定义类型

如果在VBA中声明了具体类型 ,请参考下表在VB.NET中做出相应修改

一般来说 ,新手不用声明类型 ,在强大的VS自动类型推断能力下, 99%比你自己声明类型,运行速度更快
实际使用中 不用带System.的前缀
VBA基本类型 .NET类或结构

参数参数默认按值Byval传递 要按引用传递需要指定ByRef

在VBA的函数参数里,默认都为ByRef引用传递,到了VB.NET注意默认都是ByVal传递,如果希望对基本数据类型在传递过程中进行修改,那需要在参数前加ByRef声明


如上图所示 在VB.NET里参数声明要改为




Sub 改变参数(ByRef x, y)    x = x + y 'x会被子函数改变End Sub

Excel枚举值的处理方式

在Excel880VSTO框架阿加持下 大部分枚举值可不用修改直接复制到VS直接使用
少部分枚举值如果提示未定义 在VBA立即窗口 ?枚举值 输出具体值 代码中替换即可
更多细节在后续课程实践中一一解决

作业

录制一个VBA宏, 选中一片区域, 填充随机数,填充底色加边框,然后修改为VB.NET代码调试运行

郑广学VSTO教程购买方式

淘宝下单地址(支持花呗) 

excel880.taobao.com
郑广学VSTO课程云课堂网址

v.excel880.com

登陆后可免费试学前3节

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多