Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >VBA 在 Excel 中的常用操作

VBA 在 Excel 中的常用操作

作者头像
零式的天空
发布于 2022-03-24 06:38:14
发布于 2022-03-24 06:38:14
3.5K01
代码可运行
举报
文章被收录于专栏:零域Blog零域Blog
运行总次数:1
代码可运行

文件操作

引用打开的工作簿

使用索引号(从 1 开始)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Workbooks(1)

使用工作簿名称

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Workbooks("1.xlsx")

创建一个 EXCEL 工作簿对象

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Dim wd As Excel.Application
Dim wb As Workbook

Set wd = CreateObject("excel.application")
wd.Visible = True
Set wb = wd.Workbooks.Open(ThisWorkbook.Path & "/test.xls")

' ...

wb.Close
wd.Quit

打开/保存/关闭工作簿

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Dim wb As Workbook

wb = Workbooks.Open(ThisWorkbook.Path & "/test.xls")

' ...

wb.Save
wb.Close

关闭所有工作簿

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Workbooks.close

另存为(自动打开新文件关闭源文件)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ThisWorkbook.SaveAs FileName:="D:\1.xls"

另存为(保留源文件不打开新文件)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ThisWorkbook.SaveCopyAs FileName:="D:\1.xls"

拷贝文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
oldfile = ThisWorkBook.Path & "/old.xlsx"
newfile = ThisWorkBook.Path & "/new.xlsx"
FileCopy oldfile, newfile

删除文件夹下的所有文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
base = ThisWorkBook.Path & "/文件夹/"
pattern = base & "*.*"
file = Dir(pattern, vbReadOnly)
While file <> ""
    Kill base & file
    file = Dir
Wend

创建文件夹

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
MkDir(directory)

判断文件夹是否存在

以下为不存在即创建

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
If Dir(outputDir, 16) = Empty Then
    MkDir (outputDir)
End If

判断文件是否存在

方法 1:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Dim fileSystemObject As Object

Set fileSystemObject = CreateObject("Scripting.FileSystemObject")

If fileSystemObject.FileExists(<filepath>) = True Then
    MsgBox "文件存在"
End If

方法 2:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Dim file As String

file = Dir("E:\MyPictures\Pic\logo.gif")

If file <> "" Then
    MsgBox  "文件存在"
Endif

格式操作

设置边框与自动筛选

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Set Rng = MyWorkSheet.UsedRange
With Rng
    .Borders.LineStyle = xlContinuous
    .Borders.Weight = xlThin
    .AutoFilter
End With

获取或者设置单元格背景色

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
MyWorkSheet.Cells(i, j).Interior.ColorIndex

让某表格选中的单元格变成指定颜色

在 thisworkbook 中添加如下代码段:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
    If ActiveSheet.Name = "yoursheet" Then
        ActiveSheet.UsedRange.Interior.ColorIndex = 0
        Target.Interior.ColorIndex = 6
    End If
End Sub

在单元格里回车 / 换行

设置单元格 Value 里使用 Chr(10)Chr(13),分别表示回车、换行。

隐藏行

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
MyWorkSheet.Rows(i).Hidden = True

单元格内容为纯文本

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sheet.Cells(m, n).NumberFormatLocal = "@"

选择

引用单元格 / 区域

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Range("A1") '表示 A1 单元格
Range("A2:D1") '表示 A2D1 区域
Range("A2:D1")(3) '表示该区域里的第三个单元格
Range("D" & i) 'i 为变量
Range("D3:F4,G10") '引用多个区域
Range("2:2") '引用第二行
Range("2:12") '引用第二行到第十二行
Range("D:A") '引用第 ADRows(2) '引用第二行
Rows("2:4") '引用第二到四行
Columns("B")
Columns("B:D")
Range(Clee1, Cell2) '左上与右下
Range(Range1, Range2) '取最大范围

选中单元格 / 区域

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Range("1:1").Select '选中第一行

获取当前选中区域

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
MyWorkSheet.Application.Selection

数据结构

Dictionary

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Dim dict
Set dict = CreateObject("Scripting.Dictionary")

' 新增,各种类型都可以,包括 Dictionary
dict.Add "hello", "world"

' 数量
dict.Count

' 删除
dict.Remove("hello")

' 判断是否存在
dict.exists("hello")

' 取值,需要先判断存在再取
dict.Item("hello")

' 修改、新增
dict.Item("hello") = "world"

' 循环
k = dict.Keys
v = dict.Items
For i = 0 to dict.count - 1
    key = k(i)
    value = v(i)
Next

' 清空
dict.RemoveAll

语言基础

String to Integer、Double

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
CInt(MyWorkSheet.Cells(1,7))

CDbl(MyWorkSheet.Cells(1,7))

字符串分割/获取数组长度

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Dim arr() As String
arr() = Split(ws.Cells(a, b).Value, "-")
alen = UBound(arr) - LBound(arr) + 1

判断单元格是否为空

判断单元格的 value 是否为 “”。

退出

主要使用 Exit 表达式。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Exit { Do | For | Function | Property | Select | Sub | Try | While }
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-03-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
EXCEL VBA语句集300
        定制模块行为 (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.Le
Tony老师
2020/03/05
2.2K0
Excel VBA编程
在Excel中,数据只有文本,数值,日期值,逻辑值和错误值五种类型。但是在VBA中,数据类型跟Excel不完全相同。根据数据的特点,VBA将数据分为布尔型(boolean),字节型(byte),整数型(integer),单精度浮点型(single),双精度浮点型(double),货币型(currency),小数型(decimal),字符串型(string),日期型(date),对象型等等
全栈程序员站长
2022/08/11
46.5K0
Excel VBA编程
一小时搞定 简单VBA编程 Excel宏编程快速扫盲
Excel宏编程可以快速完成批量表格操作:复制粘贴、数据过滤等,宏代码基于VB语言实现,有基础的编程经验就能快速阅读。下面是我的学习笔记。
全栈程序员站长
2022/08/10
1.8K0
ExcelVBA汇总多工作簿中指定工作表到新工作簿
哆哆Excel
2023/09/09
5130
ExcelVBA汇总多工作簿中指定工作表到新工作簿
VBA字典(详解,示例)「建议收藏」
如果对上面水果种类进行计数:countifs,只需要将分类汇总的值改为数值1即可,每出现一次‘+1’
全栈程序员站长
2022/07/22
6.4K1
VBA字典(详解,示例)「建议收藏」
合并/拆分 Excel?Python、VBA轻松自动化
当你收集了 n 个人的 EXCEL 记录表,需要将它们汇成一个总表时你会怎么做呢? 如果不通过技术手段,要一个个打开再复制粘贴也太麻烦了吧! 此时就需要一个通过几秒钟的点击就能完成合并的工具。
朱小五
2020/10/09
2.4K0
合并/拆分 Excel?Python、VBA轻松自动化
[网友投稿] Excel数据批量写入Word
前言:这是 VBA说 微信公众号借助我的这个平台给大家分享的一篇关于Excel与Word交互的文章,希望对大家有帮助。在这里,欢迎大家投稿,与更多的人分享有用的知识。
fanjy
2019/10/09
3.6K0
[网友投稿] Excel数据批量写入Word
Excel应用实践14:合并多个工作簿中的数据—示例3
要合并工作簿的情形有许多种,但最终的目的只有一条,将繁锁的手工操作自动化,让程序快速帮助我们完成这些重复的工作。
fanjy
2019/07/19
1.7K0
ExcelVBA一键汇总文件夹中多Excel简历信息到一个Excel文件中
yhd-ExcelVBA一键汇总文件夹中多Excel简历信息到一个Excel文件中
哆哆Excel
2022/10/25
4490
ExcelVBA一键汇总文件夹中多Excel简历信息到一个Excel文件中
VBA全自动录入“个人所得税的正常工资”文件模板
我们在做个人所得税时,我们需要导入“正常工资”模板文件,模板文件要录入的数据有“本期收入 、基本养老保险费、 基本医疗保险费、失业保险费、住房公积金、企业(职业)年金”有4000多人,以前用VLookup进行引用数据,每次做都要很长时间。
哆哆Excel
2022/10/31
4980
ExcelVBA请按班别拆分为工作簿(筛选复制法)
请按班别拆分为工作簿 Sub 筛选拆分() Dim d As Object, sht As Worksheet, arr,brr, r, kr, i&, j&, k&, x& Dim Rng As Range, Rg As Range, tRow&,tCol&, aCol&, pd&, Cll As Range Dim wb As Object, mysht As Worksheet Set d =CreateObject("scripting.dictionary") '
哆哆Excel
2022/10/31
4640
Excel VBA取白色单元格内容黄色的单元格的Address
哆哆Excel
2023/09/09
4140
Excel VBA取白色单元格内容黄色的单元格的Address
VBA: 将单元格区域作为邮件正文发送到指定邮箱
文章背景: 在工作中,有时需要将单元格区域的内容作为邮件正文发送到指定邮箱,如果希望邮件正文中的单元格区域带表格样式,则需要将其转换为html格式。
Exploring
2024/04/15
6870
VBA: 将单元格区域作为邮件正文发送到指定邮箱
ExcelVBA学习之一键打印文件夹中的所有Excel文件
【问题】要打印的Excel文件有几百个,格式有2003版本的也有2016版本的,全部都打印第一个sheet1工作表就可以啦,(如果所在的sheet工作都要打印呢?)。
哆哆Excel
2022/10/25
3K0
ExcelVBA学习之一键打印文件夹中的所有Excel文件
对象Workbook Worksheet Range的使用
讲再多都不如直接使用来的快,今天使用1个具体的例子来使用Workbook 、Worksheet、Range对象。
xyj
2020/07/28
1.8K0
对象Workbook Worksheet Range的使用
Excel事件示例(一)
本节介绍两个事件示例,帮助大家学习理解事件的具体应用,代码会尽量分析的详细些帮助理解。
无言之月
2019/10/13
8190
ExcelVBA筛选法按分类条件拆分一个工作表为多个工作簿
对上次的文章进行优化 ==========代码如下===== Sub 筛选拆分() Dim d As Object, sht As Worksheet, arr, brr, r, kr, i&, j&, k&, x& Dim Rng As Range, Rg As Range, tRow&, tCol& Dim wb As Object, mysht As Worksheet Set d = CreateObject("scripting.dictionary") 'se
哆哆Excel
2022/10/31
3.7K1
VBA用字典批量查找社保数据
【问题】我们知道社保导出的数据是很多合并的单元格,如果要查找一个数据都要找很久,如果数量多了更多费时,基于以上问题,特用VBA设计一个批量查找的程序。
哆哆Excel
2022/10/25
7340
VBA用字典批量查找社保数据
Excel学习----一键创建相应“惟一性”的文件,再筛选数据并写入相应的文件中
领导是要求是:有这样的一个表格,请按“模板”文件,建立面试级别的几个文件,并筛选出相应的内容填写到各工作簿中,
哆哆Excel
2022/10/25
8790
Excel学习----一键创建相应“惟一性”的文件,再筛选数据并写入相应的文件中
Python操作Excel的一些基本程序代码
下面的脚本代码打开现有工作簿并通过指定excel.Visible=True来显示该工作簿。
fanjy
2023/02/24
1.3K0
推荐阅读
相关推荐
EXCEL VBA语句集300
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验