使用VBA的一点点积累经验
1 写VBA函数的时候,如果函数有返回值,则写成如下形式
'获取真实数据的实际行数
Public Function GetMaxRow() as integer
For i = MinRow To MaxRow '循环最小行到最大行
For j = MinCol To MaxCol '循环最小列到最大列
If Trim(Cells(i, j).Value) <> "" Then '如果该行有一列值不为空,则视为有效行
Exit For
Else '如果这一行每一个值都为空,而且直到最后一列的值都为空,则说明该行为空
If j = MaxCol Then '以后的数据均视为无效
GoTo a '跳出所有循环,得到实际数据的最大行
End If
End If
Next
Next
a:
GetMaxRow = i
End Function
2 在写一些比较特殊的功能的时候,比如将某列设置有效性->列序的时候,代码比较复杂,可直接操作设置,录制宏,保存后直接使用录制的宏的代码即可。
3 几个常用事件
如果是打开或关闭时的事件,则在WeekBook里找open或close就可以,如果是操作某Sheet里的VB控件,则要加上Sheet名。
4 如果要替换掉字符串中的某些字符,可以用VBA函数VBA.Replace(),如
For i = MinRow To MR
MTM = Cells(i, 3).Value
MTM = VBA.Replace(MTM, " ", "")
MTM = VBA.Replace(MTM, "-", "")
Cells(i, 3) = MTM
Next
也可以用工作表函数WorksheetFunction.Substitute(MTM, " ", "")