浅析如何学习VBA

来源 :商品与质量·房地产研究 | 被引量 : 0次 | 上传用户:sy_2005
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  【摘 要】 人们常说兴趣是最好的老师,压力是前进的动力。要想学好VBA只有培养浓厚的兴趣,才能有学习的动力,多学习基础知识,本文我们来看看VBA的一些基础知识。
  【关键词】 VBA;语句;学习
  一、对常用的VBA语句的理解
  [A65536].End(xlUp).Row 'A列末行向上第一个有值的行数
  [A1].End(xlDown).Row 'A列首行向下第一个有值之行数
  [IV1].End(xlToLeft).Column '第一行末列向左第一列有数值之列数。
  [A1].End(xlToRight).Column '第一行首列向右有连续值的末列之列数
  Application.CommandBars("Standard").Controls(2).BeginGroup=True '在常用工具栏的第二个按钮前插入分隔符
  Cells.WrapText = False '取消自动换行
  If Len(Target) > 5 Then '如果当前单元格中的字符数超过5个,执行下一行
  Target.WrapText = True '自动换行
  End If
  [A1:B10].SpecialCells(xlCellTypeBlanks).Rows.Hidden = True '有空格即隐藏行
  [A2].parent.name '返回活动单元格的工作表名
  [A2].parent.parent.name '返回活动单元格的工作簿名
  如下代码可使工作簿打开后30秒(或闲置30秒)内不输入、不重新选择等,自动关闭工作簿
  Private Sub Workbook_Open() '工作簿打开事件
  tt '工作簿打开时启动 tt 过程
  End Sub
  Private Sub Workbook_SheetChange (ByVal Sh As Object, ByVal Target As Range) '工作表变化事件
  tt '工作表中任一单元格有变化时启动 tt 过程
  End Sub
  Private Sub Workbook_SheetSelection Change(ByVal Sh As Object, ByVal Target As Range) '工作表选择变化事件
  tt '工作表中单元格的选择有变化时启动 tt 过程
  End Sub
  Sub tt() 'tt 过程
  Dim myNow As Date, BL As Integer '定义myNow为日期型;定义BL为长整型
  myNow = Now '把当前的时间赋给变量myNow
  Do '开始循环语句Do
  BL = Second(Now) - Second(myNow) '循环中不断检查变量BL的值
  If BL = 30 Then GoTo Cl '当BL=30即跳转到CL
  DoEvents '转让控制权,以便sheets可继续操作
  Loop Until BL > 30 '当BL>30即跳出循环
  Exit Sub
  Cl:
  Application.EnableEvents = False '避免引起其他事件
  ActiveWorkbook.Close True '关闭活动工作簿并保存
  Application.EnableEvents = True '可触发其他事件
  End Sub
  range("e4").addcomment.Text "代头" & Chr(10) & "内容……" '添加批注
  range("e4").Comment.Visible = True '显示批注
  把工作簿中所有工作表的指定列调整为最佳列宽:
  Sub 调整列宽()
  Dim i%
  For i = 1 To Sheets.Count '遍历工作簿中所有的工作表
  Sheets(i).Columns("A:K").AutoFit '把每个工作表的[A:K]列调整为最佳列宽
  Next i
  End Sub
  Do循环语句的几种形式:
  1.
  Do While i>1 '条件为True时执行
  ... ... '要执行的语句
  Loop
  2.
  Do Until i>1 '条件为False时执行
  ... ... '要执行的语句
  Loop
  3.
  Do
  ... ... '要执行的语句
  Loop While i>1 '条件为True时执行
  4.
  Do
  ... ... '要执行的语句
  Loop Until i>1 '条件为False时执行
  5.While...Wend 语句
  While i>1 '条件为True时执行
  ... ... '要执行的语句
  Wend
  勾选"VBA项目的信任"
  Application.SendKeys "%(tmstv){ENTER}" '在 Excel 窗口操作   Application.SendKeys "%(qtmstv){ENTER}" '在 VBE 窗口操作
  Application.CommandBars("命令按钮名称").Position = msoBarFloating '使[命令按钮]悬浮在表格中
  Application.CommandBars("命令按钮名称").Position = msoBarTop '使[命令按钮]排列在工具栏中
  ActiveSheet.protect Password:="wshzw" '为工作表保护加口令
  ActiveSheet.Unprotect Password:="wshzw" '解除工作表保护
  Activesheet.ProtectContents '判断工作表是否处于保护状态
  工作表的复制与命名
  Sub wshzw()
  Dim i As Integer
  For i = 1 To 5
  Sheets("Sheet1").Copy After:=Sheets(1) 'Before/After 复制新表在 Sheets("Sheet1") 前/后
  ActiveSheet.Name = i & "月" '为复制的新表命名
  Next i
  Sheets("Sheet1").Name = "总表" '为 Sheets("Sheet1") 改名
  End Sub
  Application.EnableEvents = False
  ......
  Application.EnableEvents = True '抑制事件连锁执行
  Application.EnableEvents = False
  ActiveWorkbook.Save '抑制BeforeSave事件的发生
  Application.EnableEvents = True '抑制指定事件
  Application.DisplayAlerts=False '屏蔽确认提示
  复制行高列宽与内容:
  Sub Yjue() '过程的名称
  Sheet2.Rows("2:23").Copy '复制行区域
  Sheet3.Select '选择粘贴区域
  Range("A2").PasteSpecial Paste:=xlPasteColumnWidths '粘贴类型
  ActiveSheet.Paste '实施粘贴
  Application.CutCopyMode = False '取消复制模式
  End Sub
  如整行为空白则删除整行:
  Sub DelRow()
  Dim i As Integer, LastRow As Integer
  LastRow = ActiveSheet.Cells.Special Cells(xlCellTypeLastCell).Row '把最后行的行号赋给变量
  For i = LastRow To 1 Step -1 '倒循环
  If Range("iv" & i).End(xlToLeft).Column = 1 And Range("a" & i) = "" Then
  Range("a" & i).EntireRow.Delete '如整行为空白则删除整行
  End If
  Next i
  End Sub
  T = Application.GetOpenFilename("Text Files (*.dat), *.dat")选择文件保存路径
  通过依次赋色给单元格的例子,展示简单的 On Error GoTo Line1 用法:
  Sub Yjue() '过程名
  Dim i As Integer '定义 i 为整型
  On Error GoTo Line1 '遇到错误跳转到 Line1
  For i = 0 To 65 '予设从 0 循环到 65
  Cells(i + 1, 2).Interior.ColorIndex = i '依次赋色给第2列的单元格
  Cells(i + 1, 1) = i '依次给第1列的单元格标上色索引号
  Next i
  Exit Sub '退出过程
  Line1: '遇到错误跳转到这行继续执行
  MsgBox "默认颜色只有 " & i - 1 & "种。" '提示对话框
  End Sub '结束过程
  通过显示或取消网格线,展示运算符“Not”应用的简单示例:
  Dim myLine As Boolean '定义变量myLine为布尔型
  With CommandButton1 'With语句结构
  If .Caption = "取消网格线" Then '如按钮上显示为"取消网格线"
  Caption = "显示网格线" '改按钮上的字幕为"显示网格线"
  myLine = ActiveWindow.DisplayGridlines '把活动窗口当前网格线的显示状态赋给变量
  ActiveWindow.DisplayGridlines = Not myLine '进行逻辑否定运算   Else
  Caption = "取消网格线" '否则按钮上显示为"取消网格线"
  ActiveWindow.DisplayGridlines = Not myLine '进行逻辑否定运算
  End If
  End With '结束With语句结构
  ActiveCell.Offset(, -1).Name = "hzw" '定义名称
  ActiveCell.Precedents.Address '被当前单元格所引用的区域地址
  ActiveCell.Resize(0, 2).Select '选定当前单元格并向右延伸二格
  Activesheet.AutoFilter.Range.Columns(1).SpecialCells(xlCellTypeVisible).Count - 1 '显示自动筛选后的行数
  二、定制模块行为
  (1) Option Explicit '强制对模块内所有变量进行声明
  Option Private Module '标记模块为私有,仅对同一工程中其它模块有用,在宏对话框中不显示
  Option Compare Text '字符串不区分大小写
  Option Base 1 '指定数组的第一个下标为1
  (2) On Error Resume Next '忽略错误继续执行VBA代码,避免出现错误消息
  (3) On Error GoTo ErrorHandler '当错误发生时跳转到过程中的某个位置
  (4) On Error GoTo 0 '恢复正常的错误提示
  (5) Application.DisplayAlerts=False '在程序执行过程中使出现的警告框不显示
  (6) Application.ScreenUpdating=False '关闭屏幕刷新
  Application.ScreenUpdating=True '打开屏幕刷新
  (7) Application.Enable.CancelKey=xlDisabled '禁用Ctrl+Break中止宏运行的功能
  工作簿
  (8) Workbooks.Add() '创建一个新的工作簿
  (9) Workbooks(“book1.xls”).Activate '激活名为book1的工作簿
  (10) ThisWorkbook.Save '保存工作簿
  (11) ThisWorkbook.close '关闭当前工作簿
  (12) ActiveWorkbook.Sheets.Count '获取活动工作薄中工作表数
  (13) ActiveWorkbook.name '返回活动工作薄的名称
  (14) ThisWorkbook.Name ‘返回当前工作簿名称
  ThisWorkbook.FullName ‘返回当前工作簿路径和名称
  (15) ActiveWindow.EnableResize=False ‘禁止调整活动工作簿的大小
  (16) Application.Window.Arrange xlArrangeStyleTiled ‘将工作簿以平铺方式排列
  (17) ActiveWorkbook.WindowState=xlMaximized ‘将当前工作簿最大化
  工作表
  (18) ActiveSheet.UsedRange.Rows.Count ‘当前工作表中已使用的行数
  (19) Rows.Count ‘获取工作表的行数(注:考虑向前兼容性)
  (20) Sheets(Sheet1).Name= “Sum” '将Sheet1命名为Sum
  (21) ThisWorkbook.Sheets.Add Before:=Worksheets(1) '添加一个新工作表在第一工作表前
  (22) ActiveSheet.Move After:=ActiveWorkbook. _
  Sheets(ActiveWorkbook.Sheets.Count) '将当前工作表移至工作表的最后
  (23) Worksheets(Array(“sheet1”,”sheet2”)).Select '同时选择工作表1和工作表2
  (24) Sheets(“sheet1”).Delete或 Sheets(1).Delete '删除工作表1
  (25) ActiveWorkbook.Sheets(i).Name '获取工作表i的名称
  (26) ActiveWindow.DisplayGridlines=Not ActiveWindow.DisplayGridlines
  '切换工作表中的网格线显示,这种方法也可以用在其它方面进行相互切换,即相当于开关按钮
  (27) ActiveWindow.DisplayHeadings=Not ActiveWindow.DisplayHeadings
  ‘切换工作表中的行列边框显示
  (28) ActiveSheet.UsedRange.FormatConditions.Delete ‘删除当前工作表中所有的条件格式
  (29) Cells.Hyperlinks.Delete ‘取消当前工作表所有超链接
  (30) ActiveSheet.PageSetup.Orientation=xlLandscape   或ActiveSheet.PageSetup.Orientation=2 '将页面设置更改为横向
  (31) ActiveSheet.PageSetup.RightFooter=ActiveWorkbook.FullName ‘在页面设置的表尾中输入文件路径
  ActiveSheet.PageSetup.LeftFooter=Application.UserName ‘将用户名放置在活动工作表的页脚
  单元格/单元格区域
  (32) ActiveCell.CurrentRegion.Select
  或Range(ActiveCell.End(xlUp),ActiveCell.End(xlDown)).Select
  '选择当前活动单元格所包含的范围,上下左右无空行
  (33) Cells.Select ‘选定当前工作表的所有单元格
  (34) Range(“A1”).ClearContents '清除活动工作表上单元格A1中的内容
  Selection.ClearContents '清除选定区域内容
  Range(“A1:D4”).Clear '彻底清除A1至D4单元格区域的内容,包括格式
  (35) Cells.Clear '清除工作表中所有单元格的内容
  (36) ActiveCell.Offset(1,0).Select '活动单元格下移一行,同理,可下移一列
  (37) Range(“A1”).Offset(ColumnOffset:=1)或Range(“A1”).Offset(,1) ‘偏移一列
  Range(“A1”).Offset(Rowoffset:=-1)或Range(“A1”).Offset(-1) ‘向上偏移一行
  (38) Range(“A1”).Copy Range(“B1”) '复制单元格A1,粘贴到单元格B1中
  Range(“A1:D8”).Copy Range(“F1”) '将单元格区域复制到单元格F1开始的区域中
  Range(“A1:D8”).Cut Range(“F1”) '剪切单元格区域A1至D8,复制到单元格F1开始的区域中
  Range(“A1”).CurrentRegion.Copy Sheets(“Sheet2”).Range(“A1”)
  '复制包含A1的单元格区域到工作表2中以A1起始的单元格区域中
  注:CurrentRegion属性等价于定位命令,由一个矩形单元格块组成,周围是一个或多个空行或列
  本示例选定工作表 Sheet1 上的当前区域。
  Worksheets("Sheet1").Activate
  ActiveCell.CurrentRegion.Select
  本示例假定在工作表 Sheet1
  中有一个包含标题行的表。本示例选定该表,但不选定标题行。运行本示例之前,活动单元格必须处于该表中。
  Set tbl = ActiveCell.CurrentRegion
  tbl.Offset(1, 0).Resize(tbl.Rows.Count - 1, _
  tbl.Columns.Count).Select
  (39) ActiveWindow.RangeSelection.Value=XX '将值XX输入到所选单元格区域中
  (40) ActiveWindow.RangeSelection.Count '活动窗口中选择的单元格数
  (41) Selection.Count '当前选中区域的单元格数
  (42) GetAddress=Replace(Hyperlinkcell.Hyperlinks(1).Address,mailto:,””)
  ‘返回单元格中超级链接的地址并赋值
  (43) TextColor=Range(“A1”).Font.ColorIndex ‘检查单元格A1的文本颜色并返回颜色索引
  Range(“A1”).Interior.ColorIndex ‘获取单元格A1背景色
  (44) cells.count ‘返回当前工作表的单元格数
  (45) Selection.Range(“E4”).Select ‘激活当前活动单元格下方3行,向右4列的单元格
  (46) Cells.Item(5,”C”) ‘引单元格C5
  Cells.Item(5,3) ‘引单元格C5
  三、结语
  只有掌握好VBA的基础知识才能融会贯通,举一反三,VBA的基础知识对于初学者比较烦躁,万事开头难,只要有信心有毅力,一定可以把VBA学好
其他文献
【摘 要】 产品质量标准是规范产品生产和保证产品规格质量统一标准化的重要手段,是企业质量管理体系建设的重要组成部分,本文就山西焦煤集团制定商品煤产品质量标准的方法、特点与发挥的积极作用,以及如何进一步完善质量管理体系进行简要论述。  【关键词】 山西焦煤;产品质量标准;标准化;质量管理  一、企业概况  山西焦煤集团有限责任公司(简称山西焦煤)组建于2001年10月,是国家规划的14个大型煤炭基地
期刊
【摘 要】 由于墙体裂缝不仅影响房屋的使用也影响了房屋的美观,所以本文结合实际的工作经验,对框剪结构墙体裂缝的形成原因进行了简单的分析,并提出了一些切实可行的预防措施。  【关键词】 框剪结构;墙体裂缝;成因;防治;预防;措施  前言:  墙体裂缝在工程中的普遍存在,给工程的进度及质量都产生了不好的影响,怎样避免墙体裂缝的发生就显得尤为重要。  一、框剪结构墙体裂缝形成的原因  1、混凝土收缩导致
期刊
【摘 要】 大吨位静载堆载在本地区已大规模应用,但在具体堆载过程中存在若干问题:1)试验后一次性连续堆载剩余荷载2)二次堆载的剩余荷载3)快速法试验时“恒载’’时间带来的问题  【关键词】 基桩静载;连续堆载二次堆载快速法  近年来,我国的高层建筑发展很快,基桩工程检测要求的堆载量越来越大,因一次性堆载风险较大,在堆载过程中存在各种各样问题,现就平时工作中遇到的几种常见堆载情况提出个人的一些观点和
期刊
【摘 要】 在现代企业中,科学的、现代化企业管理很重要。由于我国企业发展起步缓慢,管理水平不足,当前,我国的企业管理,仍然存在许多问题。本文结合自己的实践,在现行机制下,对企业的管理进行了分析和探讨,并结合企业经验和国外的先进管理方法,提出一系列的改革措施,供大家参考。  【关键词】 重要意义;方法;探究;存在问题  一、企业管理的重要意义  第一方面,通过科学化的企业管理,提升了企业的工作效率,
期刊
【摘 要】 目前我们在对暖通空调系统建设施工的过程中,水系统的应用主要是将水作为主要的换热介质,来对室内空间的温度和湿度进行有效的控制调节,从而使得室内空间环境的舒适性得到进一步的提高。因此我们在对其水系统进行安装施工的过程中,就要对其安装工艺进行严格的要求,从而使得暖通空调系统的应用效果得到增强。下面我们就对暖通空调工程水系统安装施工工艺技术介绍。  【关键词】 暖通空调;水系统;安装施工技术 
期刊
【摘 要】 随着经济的快速发展,我国的建设行业也迅速崛起。其中园林工程建设不同于一般性质的建筑建设或道路建设,它是集建筑学、美学、生态学、经济学于一身的综合学科,这就要求园林工程的管理者必须具备较强的业务技术水平和指导现场施工的技能,以工程合同为纽带,保证工程质量的前提下,较好地把园林工程的科学性、技术性和艺术性等有机地结合起来,建设出经济、实用及美观的园林作品。本文是作者结合多年工作经验,对我国
期刊
【摘 要】 民用建筑是我国建筑行业的重要组成部分,与人民群众的生产生活息息相关,其节能环保的要求理应得到普遍的重视。本文正是以此为切入口,论述了当前民用建筑开展节能设计的相关要点及注意事项,提出了一些个人思考及见解。  【关键词】 民用建筑;节能设计;节能环保;节能材料;墙体保温  随着我国经济社会发展的加速以及人民群众生活水平的逐步提升,建筑行业也正在发展剧烈的震荡和变化,其中表现为建筑设计、施
期刊
【摘 要】 本文主要简单的介绍了研究我国地下储气库建设技术的背景和意义,提出有效的方法和建议来研究和发展我国地下储气库建设技术,探讨我国地下储气库建设的具体施工技术,以促进我国地下储气库建设技术水平的提高。据此,有利于推动我国储气库建设技术的发展,加强对天然气的管理,提高天然气资源的利用率,从而保障我国天然气工业的可持续发展。  【关键词】 地下储气库;建设技术;研究现状;建议  随着我国社会经济
期刊
【摘 要】 CALLS系统是中国高等教育文献保障系统的英文缩写。是高校“211工程”总体规划中三个公共服务体系之一。CALIS促进高校信息资源建设。  【关键词】 CALIS;信息资源;保障  一、当前我国高校网络信息资源建设的现状  现有数据库规模小、标准程度低,数据更新速度慢、网络化程度低。惟一具有全文的光盘数据库《中国学术期刊(光盘版)》在期刊收录的全面性等方面还需要进一步改进。可以说,我国
期刊
【摘 要】 焦炭质量是否过关,直接关系到高炉冶炼的效果。本文主要从焦炭质量对高炉冶炼的影响,焦炭的质量指标和提高焦炭质量技术三个方面进行了探讨。  【关键词】 焦炭;质量;高炉;冶炼  高炉作为炉料与煤气流相互间的反应器,高炉的正常运作其实就是炉料和煤气流在高炉里进行逆向平稳的运动。因为冶炼的原料在冶炼时是通过原始层状整体下降的,因此,焦炭的质量会对煤气流的分布产生很大的影响,最终会影响到高炉操作
期刊