本例是魔乐移动精灵的手机通讯录导出备份文件,我们可借此文件在电脑上进行操作,然后再还原到手机,效率极高。这里我要达到以下目的:一、输入的是移动公司做的虚拟缩短号,我单位是69+手机号3位尾数;二、根据“表示为”将“姓”和“名”分开分别填到A和B列。图1是原始文件,图2是计算后的文件。通过VBA编程解决,程序如下:
图1
先在表1(sheet1)中加命令控件“计算短号”,方法见图2
图2
在设计模式下,双击“计算短号”命令控件,输入以下程序
Dim n As Long
Private Sub CommandButton1_Click()
For n = 2 To 300
If Sheet1.Cells(n, 38).Value = "" Then End '38列就是AL列
Sheet1.range("a" & n) = Left(Sheet1.range("AL" & n), 1) ’取出“姓”
Sheet1.Cells(n, 2).Value = Trim(mid(Sheet1.Cells(n, 38).Value, 2,10)) ’取出“名”
If Sheet1.range("g" & n) = "同事" Then Sheet1.range("l" & n) = "69" & Right(Sheet1.range("j" & n), 3)
Next
End Sub
注意:表示单元格时,range是用字符表达的,如“A1”,“B3”等,引号要用半角或英文状态下。而cells是用数字表达的,如“A1”是1行1列cells(1,1),“B3”是3行2列cells(3,2)。
If Sheet1.Cells(n, 38).Value = "" Then End 判断第N行,38列即AL列,是否为空,真就结束,假就继续,有这一句判断,For n = 2 To 300中的300可以设大一点没有关系。Sheet1.range("a" & n) = Left(Sheet1.range("AL" & n), 1)和 Sheet1.Cells(n, 2).Value = Trim(mid(Sheet1.Cells(n, 38).Value, 2,10))语句都是截取字符串,分别用了range()和cells(),仔细体会其差别。