最近需要帮忙用EXCEL记一些账目,为了提高效率,稍微学习下了VBA进行编程,笔记之。
在EXCEL中按alt+F11就能跳到VB的开发界面 |
变量定义: Dim 变量as 类型 '定义为局部变量,如 Dim xyz as integer |
注释: Rem 注释内容 或者 ' 注释内容 (行注释) |
将窗体的showmodal设置为false 即可在运行窗体的同时编辑EXCEL 即 无模态窗体 |
关系运算符 等于 用= 不等于用 <> 逻辑运算 and or not xor eqv(逻辑等) imp(隐含) |
变量类型 String、byte 、boolean 、integer、 long 、single(单精度) 、double date(日期)、 currency(货币)、 decimal(小数点型)、 variant(变量型)、object(对象型) |
控件传递: Private Function NumberCheck(tb As MSForms.textBox) As Boolean 调用 re = NumberCheck(textBox) 注意 如果function有返回值一定要有个变量去保存它,不然会提示404错误 要求对象 |
通过异常判断worksheet的是否存在 On Error GoTo A |
textbox的换行 在运行阶段,可以通过在需要换行的地方按住Ctrl+Enter或者Shift+Enter组合键强制换行。 |
关于0 在EXCEL的cell里的值显示为0 但是通过 Dim myNumber As Single 这样设置后 textbox显示出来的不一定为0 ,可能为一个很小的数, 我猜这应该是精度问题 |
窗体的初始化事件 Private Sub UserForm_Initialize() |
使用with语句提高效率,当时对同一个sheet有多个赋值操作 比如 worksheets("219").Cells(i, 7).value = 1 ....要调用多次,这样效率有点低,明显会感觉变慢 改为如下便可提高程序执行效率: with worksheets("219") .Cells(i,7).value = 1 end with |
Worksheets("汇总").Cells(i, 1).value = intTmp |
Dim isDone(10) as Integer 使用数组的时候要记得重新初始化 Erase isDone 比如: For i=1 to 10 Dim isDone(10) as Integer isDone(i) = 1 Next 酱紫的话 isDone不会每次都自己初始化,最后isDone全部为1 |
转载于:https://blog.51cto.com/loma1990/1435080