题记:

之前用VBA做过几个小工具,用来实现办公自动化的。在编写过程中也遇到了一些问题,但最终都通过网友们的分享予以解决,现对其中的一些知识点进行总结。

common sense

取消文件刷新Application.ScreenUpdating = False

活动工作表

'激活工作表1
Sheets("Sheet1").Activate Worksheets("Sheet1").Activate
Sheets(1).Activate Worksheets(1).Activate '用序号表示工作表比较简洁,但不直观; Sheets比WorkSheets简洁;

自动调整行高与列宽

ActiveSheet.UsedRange.EntireRow.AutoFit            ‘自动调整行高
ActiveSheet.UsedRange.EntireColumn.AutoFit '自动调整列宽

程序分行书写

  1. 若是语句,在要换行的地方加 一个空格 与 一个下划。
  2. 若是字符串,加 一个空格一个"&"一个空格一个下划

变量定义

'定义字符串strFolder, 整形intRow及工作簿变量wb
dim strFolder$, intRow%, wb as Workbook

控制流

与其它语言一样,VBA的控制流常用的也是 顺序、条件与循环三种。

‘循环: Do
'当文件名为空时,才停止循环
Do Until strFileName = ""
Pass
Loop Do while strFileName <> ""
Pass
Loop 'For Each... In ...
‘循环 活动工作表中的已用单元格
For Each std In ActiveSheet.UsedRange

错误处理

'当出现错误时,自动跳到错误处理部分
On Error GoTo ERROR0
pass
ERROR0:
MsgBox("Something is wrong! ")

工作簿工作表的选取

'使用此工作簿工作表1的 A列 取消单元格合并
ThisWorkbook.Sheets(1).Range("A:A").UnMerge

操作文件夹与文件

'弹出选择文件夹的对话框,将此文件夹的 路径赋予 变量strFolder
FolderPath = GetPath() 'Dir() 函数:用于获取 文件名;
’下例为获取FolderPath目录下的 xls文件名
FileName = Dir(strFolder & "\*.xls")
Pass
Dir() ’通过此函数,可以自动打开下一个Excel文件 ’.Open()函数:用于打开文件
'下例为打开一个excel工作簿,并激活其中的一个工作表
Set wb = Workbooks.Open(FolderPath & "\" & FileName)
wb.Sheets(“Sheet1”).Activate
pass
wb.Close False ‘不保存修改然后关闭

获取工作表中 某列 已用的行数

此处可以用到 End(xlDown) 或 End(xlUp),此函数的功能与Excel中的快捷键Ctrl + 方向下键Ctrl + 方向上键相同,

可以定位到该列的最后一个已用 元素。



复制单元格的内容到另一Excel

情景1:将活动工作表的一个单元格的值 复制到 另一Excel的一个Range

ActiveSheets.Range("F4").Copy ThisWorkbook.Sheets(1).Range("F" & startRow & ":F" & endRow)

情景2:与楼上相反,将活动工作表中的一个Range区域,复制到另一个Excel的一个区域(选定的是个单元格,会自动变为区域)

ActiveSheets.Range("F" & startRow & ":F" & endRow.Copy ThisWorkbook.Sheets(1).Cells(startRow, "F")

获取某个单元格的值

获取某个单元格的值有多种方法,常用的是用 Cells() 与 Range()。

Range()

'获取某个单元格
WorkSheets(1).Range("F4") '单元格F4(第4行,第F列)中的值 '获取某个区域的单元格
WorkSheets(1).Range("A1:H8") '区域的值

Split()处理字符串

Split()函数可以用来处理字符串,它的作用是将字符串按特定的字符分隔,返回一个一维数组。

s = "abc, d, e, f ,g"
arr = Split(s, ",") '结果是一个包含5个项的一维数组
m = Split(s, ",") (0) 'm为abc
brr = Split(s, ",",2) '将s以逗号分为两项,brr(0) = abc, brr(1) = "d,e,f,g"

VBA---Basic的更多相关文章

  1. 杂项-软件: VBA(Visual Basic for Applications)

    ylbtech-杂项-软件: VBA(Visual Basic for Applications) VBA (Visual Basic宏语言) Visual Basic for Application ...

  2. VBA: Cant find project or librar

    Appears OK to me but the error message " Cant find project or library." suggests it could ...

  3. VBA续嘘嘘

    什么是VBA?它有什么作用? A.实现Excel中没有实现的功能. B.提高运行速度. C.编写自定义函数. D.实现自动化功能. E.通过插入窗体做小型管理软件. VBA在哪里存放的?怎么运行? A ...

  4. VBA嘘嘘嘘(1)——将Excel数据填入到已存在的Word模板表格(实例应用)

    傻瓜可以写出机器读懂得代码,但写出让人能读懂的代码的是优秀程序员 Sub 填充() Application.ScreenUpdating = False 'ScreenUpdating 是控制你的ex ...

  5. 用EXCEL内嵌的Visual Basic for Application 编程,通过 UGSimple USB-GPIB 控制器来驱动仪器34401A,并从34401A读取数据

    现在市场上有很多中USB-GPIB 控制器,或叫 USB 转GPIB链接线. 每种GPIB控制器都有它的 函数库(dll库).各种GPIB 控制器的价钱插别很大.这里以一种价钱较便宜的USB-GPIB ...

  6. 浅谈VBA

    VBA,全称Visual Basic for Applications,其中的一些专业性的解释可以自行搜索,这里就不一一介绍.半年以前,我是不知道VBA的,当我听到VBA的时候,我却迷糊了.VBA是什 ...

  7. Excel VBA自动添加证书

    ---恢复内容开始--- 在说这个话题之前,我先解释一下为什么要加数字证书签名,它有什么作用,后面再解释如何添加.首先解释下证书添加的位置,如下图所示: 1.单击左上角的Office 按钮,选择右下角 ...

  8. 利用VBA查找excel中一行某列第一次不为空与最后一列不为空的列数

    昨日同事有需求,想知道每个商品第一次销售的月份,以及最后一次销售的月份. 本想通过什么excel函数来解决,但是找了半天也没找到合适的,最后还是通过VBA来解决吧. 使用方法: Excel工具-宏-V ...

  9. excel vba 当cell的值变化时 进行判断操作

    示例效果: ----------- 在excel的sheet1中, 当A列的值 大于100时 ,其对应B列背景显示红色,C列显示"有数据" 否则,B列背景色正常,C列清空相应的数据 ...

  10. [转载]如何破解Excel VBA密码

    原文链接:http://yhf8377.blog.163.com/blog/static/1768601772012102111032840/ 在此之前,先强调一下,这个方法只是用来破解Excel内部 ...

随机推荐

  1. 微软Azure配置中心 App Configuration (二):Feature Flag 功能开关特性

    写在前面 Web服务开发过程中我们经常有这样的需求: 某些功能我必须我修改了配置才启用,比如新用户注册送券等: 某个功能需到特定的时间才启用,过后就失效,比如春节活动等: 某些功能,我想先对10%的用 ...

  2. LOJ6077「2017 山东一轮集训 Day7」逆序对 (生成函数+多项式exp?朴素DP!)

    题面 给定 n , k n,k n,k ,求长度为 n n n 逆序对个数为 k k k 的排列个数,对 1 e 9 + 7 \rm1e9+7 1e9+7 取模. 1 ≤ n , k ≤ 100   ...

  3. 【LOJ#3197】【eJOI2019】T形覆盖 - (图论、简单推导)

    题面 题解 (题目中说的四种摆放方式实际上是分别旋转0°,90°,180°,270°后的图形) 题目中关于摆放方式的描述听起来很臭,我们把它转换一下,每个拼版先覆盖"上下左右中"五 ...

  4. JS/java实现QQ空间自动点赞

    使用方法: 1:进入QQ空间 2:复制下面代码 3:按F12或右键审查元素 进入控制台 也就是console 4:粘贴  回车键  喝口水 5:如果嫌慢的话可以 修改这段代码. window.setI ...

  5. CF -1679C

    Problem - 1679C - Codeforces 题意:当t=1加入一个点,每个点可以影响一行和一列,t=2删除某个点,t=3判断这个矩形内的每个点是否都可以影响. 思路:开始时直接暴力,T了 ...

  6. 第九十五篇:vue-router的导航守卫

    好家伙,考完期末考了. 恢复博客更新 1.什么是导航守卫? "导航"表示路由正在发生变化 设置导航,就在切换过程中进行限制   "守卫"就好理解了 盯着你,不然 ...

  7. 一个注解解决ShardingJdbc不支持复杂SQL

    背景介绍 公司最近做分库分表业务,接入了 Sharding JDBC,接入完成后,回归测试时发现好几个 SQL 执行报错,关键这几个表都还不是分片表.报错如下: 这下糟了嘛.熟悉 Sharding J ...

  8. HBase原理深入

    HBase 读写数据流程 Hbase 读数据流程 首先从 zk 找到 meta 表的 region 位置,然后读取 meta 表中的数据,meta 表中存储了用户表的 region 信息 根据要查询的 ...

  9. 思维导图学《On Java》基础卷 + 进阶卷

    说明 目录 思维导图 导读 第 1 章 什么是对象 第 3 章 一切都是对象 第 6 章 初始化和清理 第 7 章 实现隐藏 第 8 章 复用 第 9 章 多态 第 10 章 接口 第 11 章 内部 ...

  10. 第六章:Django 综合篇 - 3:使用MySQL数据库

    在实际生产环境,Django是不可能使用SQLite这种轻量级的基于文件的数据库作为生产数据库.一般较多的会选择MySQL. 下面介绍一下如何在Django中使用MySQL数据库. 一.安装MySQL ...