小目标学会一般VBA代码修改为VB.NET的一般技巧 视频讲解 1.6 VBA代码如何快速修改为VB.NET代码 请点击原文链接查看视频 VBA写一段代码 在VS测试框架里插入模块写入代码变量必须定义 可以不定义类型 但是必须定义VBA里变量可以不定义直接使用,VB.NET必须定义,不过也可以不定义类型 常见的Excel对象类型加Excel.前缀 形如Excel.Range Excel.Worksheet Excel.Workbook 单行定义多个变量 注意类型会以最后一个为准处理方式为,无类型和有类型混合定义的行,带类型的单独提到新行定义 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 过程名(参数1,参数2)方式 必须加上括号在vba中调用子函数如下形式
以上是VBA子函数子过程的调用形式, 当不需要返回值的时候,我们是不带括号的,在VB.NET里统一只要带参数的函数和过程调用,无论是否有返回值,都要加上括号如下 '在VB.NETSub TestSub()子函数(1) '这样在vba里是无法运行的 在VB.NET里必须加括号End Sub Variant类型全部改为Object类型如果在VBA里显示声明了变体类型 dim x as Variant 在VB.NET中改为Object 或者直接删除 as Variant
数据类型的基本对应关系 实际使用中可不定义类型如果在VBA中声明了具体类型 ,请参考下表在VB.NET中做出相应修改 一般来说 ,新手不用声明类型 ,在强大的VS自动类型推断能力下, 99%比你自己声明类型,运行速度更快 参数参数默认按值Byval传递 要按引用传递需要指定ByRef在VBA的函数参数里,默认都为ByRef引用传递,到了VB.NET注意默认都是ByVal传递,如果希望对基本数据类型在传递过程中进行修改,那需要在参数前加ByRef声明
Sub 改变参数(ByRef x, y) x = x + y 'x会被子函数改变End Sub Excel枚举值的处理方式在Excel880VSTO框架阿加持下 大部分枚举值可不用修改直接复制到VS直接使用 作业录制一个VBA宏, 选中一片区域, 填充随机数,填充底色加边框,然后修改为VB.NET代码调试运行 郑广学VSTO教程购买方式淘宝下单地址(支持花呗) excel880.taobao.com v.excel880.com 登陆后可免费试学前3节 |
|