以前一直做B/S方面的东东,而且是一直使用C#,这次接了一个小程序,是短信分解的宏处理程序,才开始还是觉得满好玩的,可是随着要求的增加感觉到了一点疲累,主要是此方面的相关资料很少,语法也不了解,走了很多的冤枉路, 所以想记录下来我所遇到的问题,以后不会再为出现同样的问题而烦恼了
1、动态添加控件
Private Sub UserForm_Click()
Dim oControl1As MSForms.CheckBox Set oControl1= Me.Controls.Add("Forms.CheckBox.1", "CheckBox1", True) oControl1.Caption = "kkkkkkkkk"
oControl1.Width = 12
oControl1.Height = 12 oControl1.Left = 30 oControl1.Top = 50 End Sub 当然也可以是其它控件,其它控件之ProgID 值如下: 复选框 Forms.CheckBox.1 组合框 Forms.ComboBox.1 命令按钮 Forms.CommandButton.1 框架 Forms.Frame.1 图像 Forms.Image.1 标签 Forms.Label.1 列表框 Forms.ListBox.1 多页 Forms.MultiPage.1 选项按钮 Forms.OptionButton.1 滚动条 Forms.ScrollBar.1 数值调节钮 Forms.SpinButton.1 TabStrip Forms.TabStrip.1 文本框 Forms.TextBox.1 切换按钮 Forms.ToggleButton.1
注:因为这个ProgID值老是搞不对,浪费了很多的时间,幸亏找到了这个东东
|
2、隔行选中行时,Target.Rows.Count的值不是你选中了多少行,而是连续行的值,后来我写了一个数组搞定
3、计算工作表中带值单元格的数目:WorksheetFunction.CountA(Sheet2.UsedRange)
计算工作表中含值的行的数目:WorksheetFunction.Count(Sheet2.UsedRange) 这里的行的数目比本来行少一行,我想可能是要从零计算的原因吧,我没有深入研究。
4、UBound(arr),LBound(arr),数组的下标,上标
5、双击单元格事件中加上一句 Cancel = True,则此工作表的双击事件就会失效
6、一些常用的函数:len(str)求字符串的长度,
split(str,",")是分割字符串,这个东东基本上都相同,
Mid(str,start,length) 截取字符串
用case时,前面不是switch了,改成Select ,不过有一点搞不懂,不知道为何不能和C# 一样的写法,
比如说我用
case "1":
case "2":
调用方法
那么两个条件下都调用同样的方法,但是在VBA中试了好象不可以。
Asc(str)求AssCii 值
里面还有N多很常用的函数,但是我只用到了这几个,就列举下来,以后我再慢慢整理好了。