Range("A1:B2").Select '选中"A1"."A2"."B1"."B2"四个连续的单元格 Range("12:12").Select '选中第12行 Range("B:B").Select '选中B列 Range("A1:A2,B7,2:2").Select '选中"A1"."A2".&quo…
Excel VBA语句集 引子 最近批阅学生成绩,用Excel 处理学生成绩,用到VBA 提高办公效率.需要经常查阅VBA的一些用法 正文 定制模块行为 (1) Option Explicit '强制对模块内所有变量进行声明 Option Private Module '标记模块为私有,仅对同一工程中其它模块有用,在宏对话框中不显示 Option Compare Text '字符串不区分大小写 Option Base 1 '指定数组的第一个下标为1 (2) On Error Resume Nex…
Excel VBA出错时给出的错误信息极少,需要充分利用各种工具来进行调试. 1.编译错误 常见的编译错误有: 错误的源代码格式,比如if后面缺少then:在编辑器中该行会变成红色. 错误的语法结构,比如if和end if没有对应上:代码运行前会给出编译错误提示. 类型不匹配:函数输入的参数与定义时的参数类型不同时会出现该类错误. 变量未定义:指使用了没有申明的变量类型(当Option Explicit时) 建议: 格式规范化,严格缩进.VBA插件Smart Indent是一个很好的辅助工具.这…
出处:http://www.360doc.com/content/21/1113/17/77710807_1004011085.shtml 前面我们讲的大多是**并操作单个的单元格,或者是连续的单元格区域,如果这些单元格区域不连续,如下图所示,单元格区域A1:B2.A4:B5.A7:B8分别隔开,各自独立,此时,有没有什么办法在VBA中一次获取这些区域(不能包含区域之间的空行)并对其进行相应的操作呢? VBA提供了一个Areas集合对象,用来解决这方面的情形. 如上图,在Excel中按Ctrl键…
在Excel VBA中range.offset和range.resize均可以重新选择区域,但range.offset表示偏移且偏移后尺寸不改变,range.resize则会根据输入的行数和列数重新定义区域.   一.range.offset(偏移行,偏移列) 偏移行和列若为正则向下和向右偏移,若为负数则表示向上和向左偏移,若为零则表示不偏移.   示例如下:range.offset(1,1)表示向下和向右移动一个单元格.   二.range.resize(行数,列数),返回调整后的区域大小 不…
用VBA拆分工作表是一个不错的方法,特别是在处理大量数据的时候,能节省不少时间.   1.高级筛选: 筛选并复制到新工作表的关键代码如下: Range("Database").AdvancedFilter _     Action:=xlFilterCopy, _    CriteriaRange:=Range("Criteria"), _    CopyToRange:=Range("Paste"), _     Unique:=False 该…
VBA中的流程控制分为两种,其一是条件结构式的,即根据条件判断的结果去选择性执行相应的语句(块):另一种是循环,即循环地执行语句(块).本节介绍第一种. 1. IF if 语句其实包含有几种形式: ① If...Then...End If 其格式为: If 逻辑表达式 Then ' 如果逻辑表达式为真,则执行这里的语句 End if 例如: If 8 > 5 Then Debug.Print "Yes" End If 输出结果为:Yes ② If...Then...Else...…
原文地址:https://www.cnblogs.com/heekui/archive/2008/03/30/1129355.html 近日的一系列工作是做网站的营运维护,因此做了大量的支持工具.有Excel中写VBA的,也有直接C#做的工具.有时需要在C#中执行Excel VBA宏,甚至有时还需要在执行了VBA宏之后,获取返回值再进行相应的处理.为了使用方便,我写了一个执行Excel VBA宏的帮助类 .放在博客里做个备份也希望对有类似需求的朋友有所帮助. 帮助类仅提供了一个方法:RunExc…
在Office 2010 32位上开发的Excel VBA系统,迁移到Office 2010 64位下面,打开后使用,报下面错误: 解决办法:  在Declare 后面加PtrSafe 进行标记…