《ExcelVBA文本格式处理编程方法.doc》由会员分享,可在线阅读,更多相关《ExcelVBA文本格式处理编程方法.doc(4页珍藏版)》请在三一办公上搜索。
1、Excel 2007 VBA文本格式处理编程方法摘 要 利用Excel中的VBA编程平台,可以编写出各种基于Excel的数据处理程序,不仅可以数值计算,还可以进行文本格式处理,本文阐明了一种文本格式处理编程方法,展示了利用Excel 2007 VBA 编程处理文本格式的基本原理与方法。关键词 VBA编程,Excel,文本格式处理 一、数据处理如果需要将第三列变成第四列的格式(如表1所示),有括号去掉括号,将括号里的字符变成上脚字符,若无括号,有“折号,将折号后的字符变成上脚,若无括号,无折号,保持原格式不变。数据内容不变。这种情况如果有少数几行可以,手工编辑改变格式就可以,如果数据上万行,手工
2、编辑就不可取了,编程自动改变格式自然成为首选。表1 列举实例井名油组层编号1上标位置标志层编号2E双11(1-2)2111-2E双11-32213E双12(1-2)2121-2E双1303二、基本算法求取上脚起始位置,即有括号为“(”的位置;没有括号,有折号,刚找折号的位置;既无括号,又无折号为零。利用Microsoft Excel 中的 Visual Basic 编程,使用 Range 对象,核心语句是:Range(tt).Characters(Start:=temp, Length:=3).Font.Superscript = Trueit为范围变量,temp为位置变量,关键点是生成位置参
3、数,然后通过循环,生成将目标列的数据格式修改。标识和处理 Range 对象最常用的方法,如表2所示。用 A1 样式记号引用单元格和单元格区域,可使用 Range 属性来引用 A1 引用样式中的单元格或单元格区域。下述子程序将单元格区域 A1:D5 的字体设置为加粗。Sub FormatRange() Workbooks(Book1).Sheets(Sheet1).Range(A1:D5) .Font.Bold = TrueEnd Sub 表2 Range引用处理区域的方法引用 含义Range(A1) 单元格 A1Range(A1:B5)从单元格 A1 到单元格 B5 的区域Range(C5:D
4、9,G9:H16)多块选定区域Range(A:A)A 列 Range(1:1)第一行 Range(A:C) 从 A 列到 C 列的区域Range(1:5) 从第一行到第五行的区域 Range(1:1,3:3,8:8)第 1、3 和 8 行 Range(A:A,C:C,F:F)A 、C 和 F 列要引用一个对象,可以使用很多不同的方法。您可以根据程序运行所处的实际环境,以方便和易于理解为原则,确定具体使用何种方法。本文主要采用使用 Range 属性的 A1 样式引用法。三、数据处理1启用宏窗口左上角的office按钮Excel选项信任中心-信任中心设置-宏设置启用宏2。首先如何进入宏编辑状态,在
5、Excel工具菜单中视图单击宏(或)ALT+F8查看宏窗口,3创建宏在宏窗口的宏名文本框中输入将创建的宏名,然后点击宏窗口里的“创建”按钮,便进入Visual basic编辑窗口,4生成用户窗体接下来在这个窗口中插入用户窗体,再向用户窗体添加按钮,为新添加的按钮增加响应代码。运行程序。 5编写代码6运行程序四、Excel对象模型要完成这个编程任务,须得深刻理解Excel对象模型,Excel的对象模型是通过层次结构很有逻辑地组织在一起的,一个对象可以是其他对象的容器,可以包含其它的对象,而这些对象又包含其它的对象。位于顶层的是Application对象,也就是Excel应用程序本身,它包含Exc
6、el中的其它的对象,如Workbook对象;一个Workbook对象包含其它一些对象,如Worksheet对象;而一个Worksheet对象又可以包含其它对象,如Range对象等。这就是Excel的对象模型。例如:Range对象在Excel对象模型中的位置为:Application对象 Workbook对象 Worksheet对象 Range对象 可以使用“对象浏览器”查看Excel对象模型的方法,快速浏览工程中的所有组件及特定过程的详细信息。知道了某对象在对象模型层次结构中的位置,就可以用VBA代码方便地引用该对象,从而对该对象进行操作,并以特定的方式组织这些对象,使Excel能根据您的需要
7、自动化地完成工作任务。因此,要熟练掌握Excel VBA编程,必须理解Excel的对象模型。 集合是对象,是一组属于同一类型的对象或相关的对象的集,作为它们的容器。例如,Workbooks对象是当前打开的所有Workbook对象的集合,Worksheets是包含在某个Workbook对象中的所有Worksheet对象的集合。 在Excel中,Application对象代表Excel应用程序本身,其它的对象都从它开始。每个对象都有自已的方法和属性,并且某些对象的一些方法和属性是相同的。 在通常情况下,我们认为先需要选择对象,然后再对所选对象进行处理,宏录制器就是这样的。事实上,在不进行选择的情况
8、下,直接在对象上执行动作将会更有效且运行快速。 在大多数情况下,需要通过引用对象所在的集合间接地引用某个对象。例如,Workbooks(“Book1.xls”)在工作簿集合中引用名为Book1的Workbook对象。 属性可以返回对另一个对象的引用,一定要认识到这一点。例如,语句Range(“A1”).Font.Bold=True中,Font属性返回Range对象中所包含的一个Font对象。 五、主要代码处理代码分如下两个部分。1 定位上标字符起始位置,并置标志位,For i = 2 To 1060 temp = Sheet1.Cells(i, 3) 为便于计算,将目标串赋值到变量temp中
9、t = InStr(temp, ()若temp中有”(“,就将”(“出现的位置序号返到t中若有括号,则把”(“序号存到同一行的第四列单元格中,且令同行的第五列单元格值为1作为识别标志,否则,如果有”-“,则记下”-“的位置序号到本行第四列单元格中,置标记单元格值为 2。无括号且无”-“,则记下上脚标记位置为0, If t 0 Then Sheet1.Cells(i, 4) = t Sheet1.Cells(i, 5) = 1 Else If InStr(temp, -) 0 Then 如果 Sheet1.Cells(i, 4) = InStr(temp, -) Sheet1.Cells(i,
10、5) = 2 End If If InStr(temp, -) 0 And Sheet1.Cells(i, 5) = 1 Then 如果有括号 td = Sheet1.Cells(i, 4) Sheet1.Cells(i, 3) = Replace(Sheet1.Cells(i, 3), (, )去掉括号 Sheet1.Cells(i, 3) = Replace(Sheet1.Cells(i, 3), ), ) Range(tt).Characters(Start:=td, Length:=3).Font.Superscript = True置目标子串为上脚格式 End If If Sheet1.Cells(i, 4) 0 And Sheet1.Cells(i, 5) = 2 Then如果无括号,只有”-“,则去掉串中的”-“并将目标子串置为上脚格式 td = Sheet1.Cells(i, 4) Sheet1.Cells(i, 3) = Replace(Sheet1.Cells(i, 3), -, ) Range(tt).Characters(Start:=td, Length:=1).Font.Superscript = True End If Next I