VBA中的一些简单的东西

VBA概述:VBA是Visual Basic For Application的缩写,是VB在office中的运用。是基于Visual Basic For Windows发展而来的,VB For Windows是Microsoft于1992年推出的开发Windows应用程序的程序设计语言,由于基语法简单,易学易用,所以深受用户的欢迎。而VBA和VB For Windows大体相似。
    在Office2000之前,VBA在Word,Excel,Access等Office系统软件中的运用有些有同,但是到Office2000就统一起来了。
Excel是第一个包含有VBA的应用程序,自Office2000以后,Eexel,Word,PowerPoint,Access中已经有了统一标准的宏语言VBA,其中Excel和Access的VBA最为成熟。
    在Excel中VBA程序即可以存放有.xls中,也可以单独以文本形式存放。对VBA的学习,用户首先必须VB有一定的了解(不过不必很专业,毕竟经常用Excel的用户一般是办公人员,不可能是专业编程人员),然后结合宏记录器学习。因为,宏记录器可以记录宏,用户可以非常清楚了然VBA的很多知识。另外,如果不是功能很强大的VBA程序,那么用宏记录器就足够了。打开密码记录器的方法,通过“工具->宏->录制新宏”。另外,用户可能用“工具->宏->宏...”来管理宏。用“工具->宏->VB 编辑器”或Alt+F11可以打开VB编辑器,在VB编程器,可以很方便地整个VB工程进行管理,可以方便地编写VBA代码,另外,用户可以再点击Alt+F11切换到Excel窗口。
 
VBA的使用过程: 
   1、创建一个Excel文件。
   2、创建一个控件,然后双击控件或是右击该控件,点击“查看代码”,就可以对该控件的某个事件,如click,keydown等。
进行编写执行代码了。创建控件的方法是,点击“视图->工具栏->控件工具箱”,打开“控件工具箱”栏,然后就可以直接拖动某个控件到Excel单元格中去。在Excel中窗口,添加的控件一般是处于执行状态的,如果要对这个控件进行编辑,除了第一次建立的时候可以对它进行属性编辑外,打开“控件工具箱”,也可以使控件处于编辑状态,如果还不行,可以再添加一个控件,然后已有的控件绝对会处于编辑状态。当然,对控件修改完毕后,别忘了删除刚才新添加的没有用的控件。在编辑状态中,你可以右击该控件,点击“属性”,那么就可以打开属性窗口,在这个窗口里,你可以很方便的对这个控件的名字,标题,大小等属性进行编辑。
   3、手动或用宏记录器对该控件的某个事件进行编码。宏记录器简单易用,不过强大的功能还是必须手动编写VBA。
 
VBA对象介绍:
  编写VBA代码的最关键在于灵活运用VBA对象,对这些VBA对象的属性或方法进行操作。另外,你也可以创建自定义函数,来对某些操作进行封装。既然是VBA,编码风格当然和VB相同,如果会VB,那么只要对VBA的对象比较了解,就可以编写功能强大的VBA程序;同样,如果不会VB,那么,只需要了解VBA的对象就够了,因为它比较简单易学。
  以下分别讨论VBA各对象对其属性与方法: 
 
  在一些可以包含其他对象的窗口对象中,有几个特殊的属性,其属性值是当前活动对象,对它们,可以直接引用。
表1 一些特殊的属性
   
对象名 含义
ActiveWorkbook 当前工作簿,即如果你打开了几个Excel文件,那么你当然正在编辑的Excel文件即ActiveWorkbook
ActiveSheet 当前工作簿中的当前工作表,即当前编辑的Excel文件中正在编辑的工作表
ActiveCell 当前工作表中活动单元格
ActiveChart 当前工作簿中的活动图表
Selection 当前被选定的对象
   
 下面详谈各对象及它们的属性和方法
 
一、Application对象
 
此对象指Excel应用程序的工作环境。
<一>属性   
1.Caption属性
  含义:Excel应用程序标题栏显示的文本。
  举例:Application.caption=“船员管理系统”,如赋值Empty,则恢复Excel默认的标题栏。
2.Cursor属性
  含义:Excel中鼠标的形状。
                                              表2 Cursor属性
属性值 鼠标形状
xlDefault 缺少型值,鼠标呈缺少形状
xlWait 等待型值,鼠标呈不断翻转的沙漏形状
xlNorthwestArrow 箭头型值,鼠标呈标准箭头形状
xlIBeam 文本型值,鼠标呈“I”字形以等待用户输入文本
  操作:Application.Cursor=xlWait等。 
3、DisplayAlerts属性 
  含义:用以确定是否显示系统的应用提示和警告信息,如果不想显示,则把些属性设为false,反之亦然。
4、DisplayFormulaBar属性 
  含义:用以确定是否显示公式编辑栏 
5、DisplayScrollBars属性 
  含义:用以确定是否显示Excel的滚动条 
6、DisplayStatusBar属性 
  含义:用以确定是否显示Excel的状态栏 
7、EnableCancelkey属性 
  含义:用以确定是否允许用户中断正在执行着的VBA程序。缺省情况下,在VBA程序执行过程中,用户按下Ctrl+Break能够中断VBA程序的执行。此时此属性即值为xlInterrupt。若要禁止中断VBA程序,由赋值为xlDisabled;若需要VBA执行过程中遇到错误进中止,由赋值为xlErrorHandler
8、ScreenUpdating属性 
  含义:用以确定是否显示VBA程序的中间运算结果。 
9、StatusBar属性 
  含义:设置状态栏的文本 
10、ActiveWorkbook属性 
  含义:如表1介绍。 
11、ActiveSheet 
  含义:如表1介绍。 
12、ActiveCell属性 
  含义:如表1介绍。 
13、ThisWorkBook属性 
  含义:用以返回正在执行着VBA程序所在的工作簿对象。这不是当前工作簿。例如有多个工作簿打开时,ActiveWorkbook属性返回当前工作簿对象,ThisWorkbook返回正在运行着VBA程序所在工作簿对象。
14、PathSeparator属性 
  含义:返回文件文件路径分隔符“/”,该属性是一个只读属性。 
  举例:Dim strPath as String 
       strPath=Application.ThisWorkbook.Path&Application.PathSeperator 
       Workbooks.Open strPath&"myExcel.xls" 
15、UserName属性 
  含义:设置当前用户名称。缺省用户是由Excel选项对话框的“常规”选项卡中“用户姓名”决定的。用户可以从“工具”菜单中选择“选项”命令来打开选项并在“常规”选项卡的“用户姓名”文本框中重新设置缺省的用户名称。
<二>方法 
1、Calculate方法 
  含义:对Excel打开的工作簿中所有的公式进行重新计算。 
2、Goto方法 
  含义:选择工作簿中的一个Range对象或一个VBA过程,格式如下: 
       Application.Goto Reference,Scroll 
  Reference参数表示Goto方法的目的地,Scroll参数若为True,滚动条滚动以使Range对象出现在工作簿窗口左上角,为False,当前工作簿窗口不属性变化。缺省值为Galse 
  举例:Application.Goto Range("C3"),True 
3、InputBox方法 
  含义:用于打开一个输入对话框,允许用户输入数据。格式如下: 
   Application.InputBox(prompt,title,left,top,helpFile,helpContextID,type) 
   prompt参数              用于设置输入对话框的提示信息 
   title参数                用于设置输入对话框的标题文字 
  default参数              用于设置输入对话框的缺省输入值 
   left和top参数            用于设置输入对话框左上角的坐标值 
   helpFile参数             用于设置输入对话框在线帮助的名称 
   helpContextID参数        用于设置输入对话框在线帮助主题的上下文标识号 
   type参数                 用于设置输入对话框输入数据的类型。缺省情况下,为文本型     
  举例:UserValue=Application.InputBox("请输入数据","数据输入",Type:=7)  
4、Onkey方法 
  含义:按下某个或组合键时执行一段VBA代码。自己尝试一下就知道了,也可看一下VB编辑器的提示(即输入Applicatio.Onkey后,VB编辑器弹出的下拉提示。 
二、Workbooks对象集 
   当前所有打开的工作簿对象的集合 
<一>属性 
1、Count属性,只读,返回Excel打开的工作簿数 
<二>方法 
1、Add方法,向工作簿对象集中一个新的工作簿,相当于“文件->新建”命令。格式如下: 
          Workbooks.Add Template 
2、Open方法,打开一个指定的工作簿。格式看一下VBA编辑器中的提示就行,太累了,不想写得这么全。 
3、Close方法,关闭一个工作簿文件 
三、Workbook对象 
代表一个独立的工作簿文件 
<一>属性 
1、ActiveSheet属性,返回当前工作簿中的活动工作表对象 
2、Author属性,返回或设定工作簿的作者姓名,由此确定工作簿的所有者 
3、Saved属性,用于瓢工作簿文件是否做过修改。 
<二>方法 
1、Activate方法,用于霜一个工作簿为当前活动工作簿,如,Workbooks("myOffice.xls").Activate 
2、Close方法,用于关闭指定的工作簿 
3、Save方法,用于保存指定的工作簿 
4、SaveAs方法,用于另存为指定的工作簿 
四、Worksheets对象集 
代表当前工作簿所有的工作表(Worksheet)的集合。 
<一>属性 
1、Count属性,返回当前工作簿中的的工作表的数量 
<二>方法 
1、Add方法,向工作表对象集中添加一个新的工作表对象,格式如下: 
   Worksheets.Add Before,After,Count,Type 
   Before和After参数指哪一个工作表之前或之后插入新工作表。取值为Worksheet 
   如:Worksheets.Add Before:=Worksheets("Sheet2"),则相当于在Sheet2工作表之前插入了一个新的工作表 
五、Worksheet对象 
代表工作簿一个独立的工作表。 
获取某个工作表,可以用Worksheets("办公费用"),也可以用Worksheets(3)之类的语句 
<一>属性 
1、Name属性,设置或返回工作表对象的名称 
2、Visible属性,确定是否隐藏某个工作表 
<二>方法 
1、Calculate法,对指定的工作表中的所有公式进行重新计算 
2、Copy方法,用于复制指定的工作表,并放置在指定的位置,实际是一个复制与粘贴并重的函数, 
  格式:Worksheet-Object.Copy Before,After 
  如Worksheet("Sheet2").Copy After:=Worksheets("办公费用"),相当于把Sheet2工作表复制,并把它放置在名为“办公费用”的工作表之后 
3、Move方法,移动指定的工作表并放置在指定的位置,用户同Copy方法,区别只天于复制与剪切之不同 
4、Delete方法,无参数删除指定的工作表,如Worksheet("Sheet2").Delete 
5、Cell方法,获取指定工作表指定行列的某个单元格 
   格式:Worksheet-Object.Cells(Row,Col),Row,Col为整型,行列值都从1开始 
   如Worksheet("Sheet2").Cell(1,1),相当于获取Sheet2工作表的第一行第一列的单元格 
五、Range对象 
代表一个半桥区域,可以由多个半桥组成,也可是由一个单元格组成。 
引用单元格可用以下两种方法: 
一是使用单元格引用,如Range("A1"),Range("A1:C3") 
二是使用单元格区域名称,如Range("myRange")。 
<一>属性 
1、FormulaR1C1属性,为指定的单元格或单元格区域建立和存储公式, 
    如Range("C5").FormulaR1C1="=SUM(R[-4]C:R[-1]C)" 
2、Value属性,为指定的单元格或单元格区域赋值,如为多个单元格,则都赋为同样的值 
3、Cell属性,以指定的单元格为苦战来描述被引用的单元格,把指定的单元格视为第1行第1列 
   格式:Range-Object.Cells(Row,Col) 
4、Offset,以指定的单元格为苦战来描述被引用的单元格,把指定的单元格视为第0行第0列 
   格式:Range-Object.Cells(Row,Col) 
5、Name属性,返回或设定指定的单元格或单元格区域的名称,然后在VBA中,可以直接用名称为引用它 
6、Count属性,返回指定的单元格区域中包含的单元格的数目,只读 
7、CurrentRegion属性,返回以某个单元格为基点的存储有数据的一个连结的单元格区域 
<二>方法 
1、Select方法方法,用于选择指定的单元格区域,执行后,该单元格区域左上角的第一个单元格成为活动单元格 
   如Range("A1:C3").Select,Range("A1:C3,D5:E6,A8:E8).Select 
2、Activate方法,用于选择指定的单元格并指定其成为活动单元格,当然只有该单元格区域左上角的第一个单元格成为活动单元格。 
3、AutoFit方法,调整选定的单元格区域所在行和列的行高与列宽,使其行高与列宽自动设定的最佳的高度与宽度。 
   如:Range("A4").CurrentRegion.Select 
      Selection.Rows.AutoFit 
4、Clear方法,清除指定的单元格区域的内容,格式和批注,相当于“编辑->清除->全部” 
   如:Range("A4:C5").Clear 
5、ClearContents方法,清除指定的单元格区域的内容,相当于“编辑->清除->内容” 
6、ClearFormats方法,清除指定的单元格区域的内容,相当于“编辑->清除->格式” 
7、ClearComments和ClearNotes方法,清除指定的单元格区域的内容,相当于“编辑->清除->批注” 
8、Copy方法,将指定单元格区域中的数据库复制到剪贴板或指定的目的单元格区域中 
9、Cut方法,将指定单元格区域中的数据库剪切到剪贴板或指定的目的单元格区域中 
10、PasteSpecial方法,用于将剪贴板中复制或剪切下来的单元格区域中的数据库有选择地粘贴到指定的目的单元格区域中 
    格式:Range-Object.PasteSpecial Paste,Operation,ShipBlanks,Transpose 
    Paste参数规定了选择体积类型的数据进行粘贴,如公式,内容,批注等,具体取值可参考VB编辑器中的提示
在没有 VBA 编辑器的情况下,直接解决 `'XlFindLookIn is not defined'` 错误比较困难,因为这个错误本质上是代码层面的问题,需要对代码进行修改。不过可以尝试以下间接的方法: #### 利用 Excel 自带的查找功能替代 可以手动在 Excel 中使用查找功能来完成类似的操作,而不依赖 VBA 代码。 #### 编写一个不需要枚举的 VBA 代码 如果有机会将代码提供给有 VBA 编辑器权限的人,可以让其将代码修改为不使用 `XlFindLookIn` 枚举的形式。以下是修改后的代码示例: ```vba Function FindAndInsertSheetNames() Dim wbA As Workbook Dim wbB As Workbook Dim wsA As Worksheet Dim wsB As Worksheet Dim rngSearch As Range Dim cell As Range Dim found As Range Dim sheetNames As String Dim i As Long Dim j As Long Dim k As Long Set wbA = ThisWorkbook Set wbB = Workbooks.Open("工作簿B.xlsx") ' 请将工作簿B.xlsx替换为实际的工作簿名称 Set wsA = wbA.Sheets(1) Set rngSearch = wsA.Range("C3:C632") For i = 1 To wbB.Sheets.Count Set wsB = wbB.Sheets(i) sheetNames = "" For Each cell In rngSearch Set found = wsB.Cells.Find(What:=cell.Value, LookIn:=1, LookAt:=1) ' 1 代表 xlValues,1 代表 xlWhole If Not found Is Nothing Then If sheetNames = "" Then sheetNames = wsB.Name Else sheetNames = sheetNames & ";" & wsB.Name End If End If Next cell For k = 3 To 632 If sheetNames <> "" Then wsA.Cells(k, "O").Value = sheetNames End If sheetNames = "" Next k Next i wbB.Close False End Function ``` 在上述代码中,使用数字 `1` 替代了 `xlValues` 和 `xlWhole`,避免了对枚举类型的使用。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值