你好,欢迎来到电脑编程技巧与维护杂志社! 杂志社简介广告服务读者反馈编程社区  
合订本订阅
 
 
您的位置:杂志经典 / 编程语言
Excel 2007 VBA文本格式处理编程方法
 

摘 要   利用Excel中的VBA编程平台,可以编写出各种基于Excel的数据处理程序,不仅可以数值计算,还可以进行文本格式处理,本文阐明了一种文本格式处理编程方法,展示了利用Excel 2007 VBA 编程处理文本格式的基本原理与方法。

关键词  VBA编程,Excel,文本格式处理

 

 一、数据处理

如果需要将第三列变成第四列的格式(如表1所示),有括号去掉括号,将括号里的字符变成上脚字符,若无括号,有“折号,将折号后的字符变成上脚,若无括号,无折号,保持原格式不变。数据内容不变。这种情况如果有少数几行可以,手工编辑改变格式就可以,如果数据上万行,手工编辑就不可取了,编程自动改变格式自然成为首选。

1 列举实例

井名

油组

层编号1

上标位置

标志

层编号2

E1

1(1-2)

2

1

11-2

E1

1-3

2

2

13

E1

2(1-2)

2

1

21-2

E1

3

0

 

3

……

……

……

……

……

……

 

二、基本算法

求取上脚起始位置,即有括号为“(”的位置;没有括号,有折号,刚找折号的位置;既无括号,又无折号为零。

利用Microsoft Excel 中的 Visual Basic 编程,使用 Range 对象,核心语句是:Range(tt).Characters(Start:=temp, Length:=3).Font.Superscript = True

it为范围变量,temp为位置变量,关键点是生成位置参数,然后通过循环,生成将目标列的数据格式修改。

标识和处理 Range 对象最常用的方法,如表2所示。用 A1 样式记号引用单元格和单元格区域,

可使用 Range 属性来引用 A1 引用样式中的单元格或单元格区域。下述子程序将单元格区域 A1:D5 的字体设置为加粗。

Sub FormatRange()
    Workbooks("Book1").Sheets("Sheet1").Range("A1:D5") .Font.Bold = True
End Sub

2 Range引用处理区域的方法

引用  

含义

Range("A1")  

单元格 A1

Range("A1:B5")

从单元格 A1 到单元格 B5 的区域

Range("C5:D9,G9:H16")

多块选定区域

Range("A:A")

A

Range("1:1")

第一行

 Range("A:C")  

A 列到 C 列的区域

 Range("1:5")

  从第一行到第五行的区域

 Range("1:1,3:3,8:8")

13 8

 Range("A:A,C:C,F:F")

A C F

要引用一个对象,可以使用很多不同的方法。您可以根据程序运行所处的实际环境,以方便和易于理解为原则,确定具体使用何种方法。 本文主要采用使用 Range 属性的 A1 样式引用法。

三、数据处理

1.启用宏

窗口左上角的office按钮—Excel选项信任中心--信任中心设置---宏设置启用宏

2。首先如何进入宏编辑状态,

Excel工具菜单中视图单击宏(或)ALT+F8查看宏窗口,

3.创建宏

在宏窗口的宏名文本框中输入将创建的宏名,然后点击宏窗口里的“创建”按钮,便进入Visual basic编辑窗口,

4.生成用户窗体

接下来在这个窗口中插入用户窗体,再向用户窗体添加按钮,为新添加的按钮增加响应代码。运行程序。 

5.编写代码

6.运行程序

四、Excel对象模型

要完成这个编程任务,须得深刻理解Excel对象模型,Excel的对象模型是通过层次结构很有逻辑地组织在一起的,一个对象可以是其他对象的容器,可以包含其它的对象,而这些对象又包含其它的对象。位于顶层的是Application对象,也就是Excel应用程序本身,它包含Excel中的其它的对象,如Workbook对象;一个Workbook对象包含其它一些对象,如Worksheet对象;而一个Worksheet对象又可以包含其它对象,如Range对象等。这就是Excel的对象模型。

例如:Range对象在Excel对象模型中的位置为:

Application对象

    Workbook对象

        Worksheet对象

            Range对象

   可以使用“对象浏览器”查看Excel对象模型的方法,快速浏览工程中的所有组件及特定过程的详细信息。

知道了某对象在对象模型层次结构中的位置,就可以用VBA代码方便地引用该对象,从而对该对象进行操作,并以特定的方式组织这些对象,使Excel能根据您的需要自动化地完成工作任务。因此,要熟练掌握Excel VBA编程,必须理解Excel的对象模型。

     集合是对象,是一组属于同一类型的对象或相关的对象的集,作为它们的容器。例如,Workbooks对象是当前打开的所有Workbook对象的集合,Worksheets是包含在某个Workbook对象中的所有Worksheet对象的集合。

     Excel中,Application对象代表Excel应用程序本身,其它的对象都从它开始。每个对象都有自已的方法和属性,并且某些对象的一些方法和属性是相同的。

     在通常情况下,我们认为先需要选择对象,然后再对所选对象进行处理,宏录制器就是这样的。事实上,在不进行选择的情况下,直接在对象上执行动作将会更有效且运行快速。

    在大多数情况下,需要通过引用对象所在的集合间接地引用某个对象。例如,Workbooks(Book1.xls)在工作簿集合中引用名为Book1Workbook对象。

    属性可以返回对另一个对象的引用,一定要认识到这一点。例如,语句Range(A1).Font.Bold=True中,Font属性返回Range对象中所包含的一个Font对象。   

五、主要代码

处理代码分如下两个部分。

1.  定位上标字符起始位置,并置标志位,

For i = 2 To 1060      

       temp = Sheet1.Cells(i, 3) ‘为便于计算,将目标串赋值到变量temp      

       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, 5) = 2

         End If

         If InStr(temp, "-") <= 0 Then

           Sheet1.Cells(i, 4) = 0

         End If

       End If

  Next i

2.根据既得的上标起始位置,实现目标格式 

For i = 2 To 1060

   tt = "C" & Trim(Str(i)) ‘生成形如C1的单元格范围值赋到变量tt中,

   If Sheet1.Cells(i, 4) > 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

  推荐精品文章

·2024年9月目录 
·2024年8月目录 
·2024年7月目录 
·2024年6月目录 
·2024年5月目录 
·2024年4月目录 
·2024年3月目录 
·2024年2月目录 
·2024年1月目录
·2023年12月目录
·2023年11月目录
·2023年10月目录
·2023年9月目录 
·2023年8月目录 

  联系方式
TEL:010-82561037
Fax: 010-82561614
QQ: 100164630
Mail:gaojian@comprg.com.cn

  友情链接
 
Copyright 2001-2010, www.comprg.com.cn, All Rights Reserved
京ICP备14022230号-1,电话/传真:010-82561037 82561614 ,Mail:gaojian@comprg.com.cn
地址:北京市海淀区远大路20号宝蓝大厦E座704,邮编:100089