作者:乔山办公网日期:
返回目录:excel表格制作
任何对象都有属性,我们在录入代码是,可以抄看到其属性。如下图,我们输入“袭worksheets.”后将会看到下拉列表,列表中包含了对应的属性和方法。
从形状上来区别百:前面带绿色图标的就是方法,带手形标志的就是属性。
VBA对象的方法,指的是某个对象所能执行的动作度。
比如“创建工作表”,创建是动词,表知示方法,它有一个动作,每个动作会产生一个可见的结道果。工作表是名词,表示对象。
VBA中对象在前,方法在后。
Worksheets.add——worksheets是工作表对象,add是方法,表示新建。
用TypeName()函数可以判断。
比如
TypeName(i)="Single" 就是单精度浮点数
TypeName(i)="String" 就是字符串
Private Sub CommandButton1_Click()
dim icell as range '应该定义一下icell为range类型
r = Range("A65536").End(xlUp).Row ’将A列最后一个非空行的行号赋值给r
crr = Sheets("2013年").[C2:C129] '将单元格区域存入数组,提高运行效率
grr = Sheets("2013年").[G2:G129] '同上
For Each icell In Sheets("当月").Range("C4:C" & r) '对于“当月”表的c4:c(r)区域,
'这里的r是上面的r,不过不清楚为什么会出现一个当月表。
tmp = "" 'tmp赋值为空
For i = 1 To UBound(crr) '第2层FOR循环
If icell = crr(i, 1) Then ’如果icell单元格的值与数组crr的第i-1个元素相等。
tmp = grr(i, 1) ’将grr数组的第i-1 个元素赋值给tmp,并退出该层for循环
Exit For
End If
Next i
icell.Value = tmp '将tmp的值赋值给icell
Next
End Sub
这段改成下e799bee5baa6e997aee7ad94e4b893e5b19e331面的试试
For i = 1 To UBound(crr) '第2层FOR循环
If icell = crr(i-1) Then ’如果icell单元格的值与数组crr的第i个元素相等。
tmp = grr(i-1) ’将grr数组的第i个元素赋值给tmp,并退出该层for循环
在VBA里面,可以使用VarType获得变量以及单元格百的数据类型,数值类型值为5(度vbDouble)、空类型问为0(vbEmpty)、字符串类型为8(vbString )。
例子代码1:显示A1单元格的数据答类型
Sub test()
MsgBox VarType([a1])
End Sub
例子代码2:判断A1单元格数据类型是否数值回
Sub test()
If VarType([a1]) = vbDouble Then
MsgBox "A1是数值类型"
Else
MsgBox "A1不是数值类型"
End If
End Sub
实际上VB还有vbLong、vbDecimal等类型,但单元格为数答值时默认是vbDouble。