【VBA入门】WorkBook 对象 Name操作 宏录制筛选删除代码

VBA 入门

  • 问题记录
    • 1 了解Excel工作簿、表格关系
      • 1 默认新建WorkBook
      • 2 新建WorkBook并命名工作表添加数据
      • 3新建带有指定数量工作表的工作簿
    • ActiveWorkbook.Names用法
      • (1) 创建名称 (全局名称和局部名称)
  • 宏录制验证删除可行性
  • 大招!!!咨询ChatGPT
  • 参考

问题记录

宏录制的这两行代码注释后不影响总表筛选,所以想删除,但是又不确定是否会造成隐藏BUG,所以对ActiveWorkbook.Names.Add 展开系统学习。

    Selection.AutoFilter
    ActiveWorkbook.Names.Add Name:="Sheet1!_FilterDatabase", RefersTo:="=Sheet1!$A$1:$AG$1", Visible:=False

Selection.AutoFilter
这行代码的作用是执行之后就会出现筛选的按钮,再次执行则取消筛选。
在这里插入图片描述
在这里插入图片描述
这个我虽然知道,但是还是用别人的宏录制展示给萌新看一下。

1 了解Excel工作簿、表格关系

简单来说:workbook包含sheets,而sheets又包含了特定的worksheet

在WorkBook、WorkSheet、Sheets三者间存在的关系是“大于”或“包含”的关系。
1、WorkBook指的是工作簿文件;
2、WorkSheet指的是工作表;
3、Sheets指的是工作表集合;
这样来看关系为:WorkBook>Sheets>WorkSheet

Workbook对象代表一个工作簿,Workbooks集合对象则代表同一Excel进程中打开的所有工作簿对象。

1 默认新建WorkBook

使用Add方法在Workbooks集合中创建新工作簿,所创建的工作簿为活动工作簿。其语法为:
Workbooks.Add(Template)
参数Template可选,决定如何创建新工作簿。如果将该参数设置为已存在的Excel模板文件名称,那么将以该文件作为模板创建工作簿。该参数可以为下列XlWBATemplate常量之一:

xlWBATChart(值-4109,代表图表)、xlWBATExcel4IntlMacroSheet(值4)、xlWBATExcel4MacroSheet(值3)、xlWBATWorksheet(值-4167,代表工作表)

在创建新工作簿时,如果指定该参数,那么将创建包含指定类型工作表的工作簿;如果省略该参数,那么将创建包含一定数量空工作表的工作簿,工作表数为SheetsInNewWorkbook属性所设置的数量。

'应用示例1:创建一个新工作簿
Sub CreateNewWorkbook1()
    MsgBox "将创建一个新工作簿."
    Workbooks.Add
End Sub

在这里插入图片描述
运行结束后生成的工作簿5、工作簿6如上图所示。注意: 生成的工作簿对象默认不会保存

2 新建WorkBook并命名工作表添加数据

Sub CreateNewWorkbook2()
    Dim wb As Workbook
    Dim ws As Worksheet
    Dim i As Long
    MsgBox "将创建一个新工作簿,并预设工作表格式."
    Set wb = Workbooks.Add
    Set ws = wb.Sheets(1)'断点记录此行效果
    ws.Name = "产品汇总表" 
    ws.Cells(1, 1) = "序号"
    ws.Cells(1, 2) = "产品名称"
    ws.Cells(1, 3) = "产品数量"
    For i = 2 To 10
        ws.Cells(i, 1) = i - 1
    Next i
End Sub

在这里插入图片描述
在这里插入图片描述
对应的工程文件视图中,有两个Sheet1,现在我手动改变Sheet1表格名字,测试wb.Sheets(1)表示所有Sheet表(Sheets)的第一表命名为“产品名称”

3新建带有指定数量工作表的工作簿

Sub testNewWorkbook()
    MsgBox "创建一个带有10个工作表的新工作簿"
    Dim wb As Workbook
    Set wb = New_Workbook(10)
End Sub
 
Function New_Workbook(wsCount As Integer) As Workbook
    '创建带有由变量wsCount提定数量工作表的工作簿,工作表数在1至255之间
    Dim OriginalWorksheetCount As Long
    Set NewWorkbook = Nothing
    If wsCount < 1 Or wsCount > 255 Then Exit Function
    OriginalWorksheetCount = Application.SheetsInNewWorkbook'默认初始工作簿中的工作表数
    Application.SheetsInNewWorkbook = wsCount
    Set New_Workbook = Workbooks.Add
    Application.SheetsInNewWorkbook = OriginalWorksheetCount
End Function

自定义函数New_Workbook可以创建最多带有255个工作表的工作簿。本测试示例创建一个带有10个工作表的新工作簿。

测试 上面代码中Application.SheetsInNewWorkbook函数的用法

Sub test_new()
    Dim wb, wb2 As Workbook
    Application.SheetsInNewWorkbook = 1'设置初始工作簿中的工作表数
    Set wb = Application.Workbooks.Add
    wb.Worksheets(1).Name = "wb_表1" '给第一个工作表设置名称
    Application.SheetsInNewWorkbook = 3
    Set wb2 = Application.Workbooks.Add
    wb.Worksheets(1).Name = "wb2_表1"
End Sub

一个工作簿中有一个工作表,另一个工作簿有三个

ActiveWorkbook.Names用法

在VBA中对名称的基本操作

(1) 创建名称 (全局名称和局部名称)

① 可以使用下面的代码在当前工作簿中创建名称:

ActiveWorkbook.Names.Add Name:="MyName", RefersToR1C1:="=Sheet1!R2C2:R6C4"
'或者
ActiveWorkbook.Names.Add Name:="MyName", RefersTo:="=Sheet1!$B$2:$D$6"

上面的代码在当前工作簿中将工作表Sheet1内的区域B2:D6命名为MyName,该名称为全局名称。在所命名的名称中不能出现空格单元格引用 .

并且,如果对命名区域使用A1样式的引用,则最后使用绝对引用,否则所命名的区域将会不确定。

在所命名的名称前加上工作表名,则创建局部名称,如第一段代码。

也通过引用指定工作表来创建局部名称,如第二段代码。

上面的代码在工作表Sheet2中创建一个局部名称MyName2,代表Sheet2中的单元格区域A1:B3。

ActiveWorkbook.Names.Add Name:="Sheet1!MyName1", RefersTo:="=Sheet1!$B$2:$D$6"
'或者
Worksheets("sheet2").Names.Add Name:="MyName2", RefersTo:="=Sheet2!$A$1:$B$3"

上面的代码在工作表Sheet1中命名区域B2:D6为MyName1,该名称为局部名称。

② 一种简单的命名方法。例如:

Worksheets("Sheet1").Range("B8:C10").Name = "MyName3"

上面的代码将工作表Sheet1中的单元格区域B8:C10命名为MyName3,为全局名称

Worksheets("Sheet2").Range("H15:G16").Name = "Sheet2!MyName4"

上面的代码将工作表Sheet2中的单元格区域H15:G16命名为MyName4,为局部名称

至此能够了理解第二行代码是 对筛选的命名,只要后续代码没有用命名的局域名称进行操作,删除也无伤大雅。

宏录制验证删除可行性

开始宏录制筛选D列采购类型为F的数据
生成的代码如下

Sub Macro1()
'
' Macro1 Macro
' 宏由 Administrator 录制,时间: 2023/08/12
    Columns("D:D").Select
    Selection.AutoFilter
    ActiveWorkbook.Names.Add Name:="Sheet1!_FilterDatabase", RefersTo:="=Sheet1!$D:$D", Visible:=False
    Range("D1:D43012").AutoFilter Field:=1, Criteria1:=Array("F"), Operator:=xlFilterValues
    ActiveWorkbook.Names.Add Name:="Sheet1!_FilterDatabase", RefersTo:="=Sheet1!$D$1:$D$43012", Visible:=False
End Sub

下面开始删除这两行操作进行Debug,观察是否能够成功筛选。

先取消筛选状态,然后注释这两行代码。观察运行结果。

在这里插入图片描述运行后可以看到采购类型能成功被筛选,所以删除这两行代码可行。

大招!!!咨询ChatGPT

在这里插入图片描述

参考

1 Excel VBA系列之通过筛选拆分数据至多张工作表:

2 Workbook 对象 应用示例

3Excel) (Worksheet.Names 属性(微软官网)
3Excel) (理解工作表中的名称

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/70188.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【数据结构】反转链表、链表的中间节点、链表的回文结构(单链表OJ题)

正如标题所说&#xff0c;本文会图文详细解析三道单链表OJ题&#xff0c;分别为&#xff1a; 反转链表 &#xff08;简单&#xff09; 链表的中间节点 &#xff08;简单&#xff09; 链表的回文结构 &#xff08;较难&#xff09; 把他们放在一起讲的原因是&#xff1a; 反转链…

Springboot3整合使用aj-captcha行为验证码解决方案

截止到目前(2023-04-20)&#xff0c;Springboot最新稳定版本已经迭代到3.0.5&#xff0c;而我们项目中使用的行为验证码框架aj-captcha还没有适配Springboot3&#xff0c;码云上类似的请求也没有得到过回应&#xff0c;于是决定自己动手适配一下&#xff0c;研究下来发现适配3.…

加盐加密算法

MD5加密加盐加密项目密码升级 MD5加密 MD5一系列公式进行复杂数学运算&#xff1b;特点&#xff1a;&#xff08;用途校验和、计算hash值方式、加密&#xff09; 1&#xff1a;定长&#xff1b;无论原始数据多长&#xff1b;算出的结果都是4或者8字节的版本。 2&#xff1a;冲…

Nodejs+vue+elementui汽车租赁管理系统_1ma2x

语言 node.js 框架&#xff1a;Express 前端:Vue.js 数据库&#xff1a;mysql 数据库工具&#xff1a;Navicat 开发软件&#xff1a;VScode 前端nodejsvueelementui, 课题主要分为三大模块&#xff1a;即管理员模块、用户模块和普通管理员模块&#xff0c;主要功能包括&#…

【网络编程·网络层】IP协议

目录 一、IP协议的概念 二、IP协议的报头 1、四位首部长度 2、16位总长度&#xff08;解包&#xff09; 3、8位协议&#xff08;分用&#xff09; 4、16位首部校验和 5、8位生存时间 6、32位源IP和32位目的IP 7、4位版本/8位服务类型 8、16位标识 9、3位标志 10、1…

Element组件浅尝辄止2:Card卡片组件

根据官方说法&#xff1a; 将信息聚合在卡片容器中展示。 1.啥时候使用&#xff1f;When? 既然是信息聚合的容器&#xff0c;那场景就好说了 新建页面时可以用来当做页面容器页面的某一部分&#xff0c;可以用来当做子容器 2.怎样使用&#xff1f;How&#xff1f; //Card …

30.基于XML的声明式事务

基于XML的声明式事务 主要是使用XML去代替注解&#xff0c;来实现起到代替注解的作用&#xff0c;实际使用频率很低 将BookServiceImpl.java中的Transactional注解删除&#xff0c;确保用户余额充足 spring-tx-xml.xml <?xml version"1.0" encoding"UTF-8…

Linux:Shell编辑之文本处理器(sed)

目录 绪论 1、sed的原理&#xff1a;读取 执行 显示 三个过程 2、sed 文本内容处理工具&#xff0c;文件过大怎么办&#xff1f; 3、sed的操作选项 3.1 常用选项 3.2 操作符 3.3 行号的范围打印 3.4 对包含指定字符串的内容进行打印 3.5 删 3.5.1 正则表达式删除 3.6…

DNS:使用 bind9 配置主从权威DNS服务器

写在前面 分享一些 使用 bind9 配置主从权威名称服务器的笔记理解不足小伙伴帮忙指正 对每个人而言&#xff0c;真正的职责只有一个&#xff1a;找到自我。然后在心中坚守其一生&#xff0c;全心全意&#xff0c;永不停息。所有其它的路都是不完整的&#xff0c;是人的逃避方式…

Flink多流处理之Broadcast(广播变量)

写过Spark批处理的应该都知道,有一个广播变量broadcast这样的一个算子,可以优化我们计算的过程,有效的提高效率;同样在Flink中也有broadcast,简单来说和Spark中的类似,但是有所区别,首先Spark中的broadcast是静态的数据,而Flink中的broadcast是动态的,也就是源源不断的数据流.在…

笔记本电脑如何把sd卡数据恢复

在使用笔记本电脑过程中&#xff0c;如果不小心将SD卡里面的重要数据弄丢怎么办呢&#xff1f;别着急&#xff0c;本文将向您介绍SD卡数据丢失常见原因和恢复方法。 ▌一、SD卡数据丢失常见原因 - 意外删除&#xff1a;误操作或不小心将文件或文件夹删除。 - 误格式化&#…

【资讯速递】AI与人类思维的融合;OpenAI在中国申请注册“GPT-5”商标;移动大模型主要面向to B 智能算力是未来方向

2023年8月11日 星期五 癸卯年六月廿五 第000001号 欢迎来到爱书不爱输的程序猿的博客, 本博客致力于知识分享&#xff0c;与更多的人进行学习交流 本文收录于IT资讯速递专栏,本专栏主要用于发布各种IT资讯&#xff0c;为大家可以省时省力的就能阅读和了解到行业的一些新资讯 资…

C++初阶之一篇文章教会你list(理解和使用)

list&#xff08;理解和使用&#xff09; 什么是list特点和优势基本操作示例用法与其他序列式容器&#xff08;如 std::vector 和 std::deque&#xff09;相比&#xff0c;std::list 显著的区别和优势成员类型 list构造函数1. default (1)2. fill (2)3.range (3)4. copy (4) li…

ubuntu20.04磁盘满了 /dev/mapper/ubuntu--vg-ubuntu--lv 占用 100%

问题 执行 mysql 大文件导入任务&#xff0c;最后快完成了&#xff0c;查看结果发现错了&#xff01;悲催&#xff01;都执行了 两天了 The table ‘XXXXXX’ is full &#xff1f; 磁盘满了&#xff1f; 刚好之前另一个 centos 服务器上也出现过磁盘满了&#xff0c;因此&a…

什么是Selenium?使用Selenium进行自动化测试

什么是 Selenium&#xff1f;   Selenium 是一种开源工具&#xff0c;用于在 Web 浏览器上执行自动化测试&#xff08;使用任何 Web 浏览器进行 Web 应用程序测试&#xff09;。   等等&#xff0c;先别激动&#xff0c;让我再次重申一下&#xff0c;Selenium 仅可以测试We…

大连交通大学813软件工程考研习题

1.什么是软件生存周期模型?有哪些主要模型? 生存周期模型&#xff1a;描述软件开发过程中各种活动如何执行的模型。对软件开发提供强有力的支持&#xff0c;为开发过程中的活动提供统一的政策保证&#xff0c;为参与开发的人员提供帮助和指导&#xff0c;是软件生存周期模型…

云计算——常见存储类型

作者简介&#xff1a;一名云计算网络运维人员、每天分享网络与运维的技术与干货。 座右铭&#xff1a;低头赶路&#xff0c;敬事如仪 个人主页&#xff1a;网络豆的主页​​​​​ 目录 前言 一.存储类型 1.本地磁盘 2.DAS 3.NAS 4.SAN &#xff08;1&#xff09;FC SA…

锁定Mac的内置键盘,防止外接键盘时的误触

场景&#xff1a;把你的外接键盘放在mac上&#xff0c;然后打字时&#xff0c;发现外接键盘误触mac键盘&#xff0c;导致使用体验极差 解决方案&#xff1a;下载Karabiner-Elements这款软件&#xff0c;并给它开启相关权限。 地址&#xff1a;https://github.com/pqrs-org/Ka…

ModaHub魔搭社区——Milvus 、Qdrant、Waeviate、Pinecone、ElasticSearch矢量数据库对比

资本市场上,2022年也是风起云涌的一年的,各大向量数据库公司纷纷完成了千万美元级别新一轮的融资。可以预见,2023年将会是向量数据库继续快速发展的一年,也会是这一新兴技术由发展走向成熟的一年。这里针对Milvus 、Qdrant、Waeviate、Pinecone、ElasticSearch这五个流行的…

编写简单的.gitlab-ci.yml打包部署项目

服务器说明&#xff1a; 192.168.192.120&#xff1a;项目服务器 192.168.192.121&#xff1a;GitLab 为了可以使用gitlab的cicd功能&#xff0c;我们需要先安装GitLab Runner 安装GitLab Runner参考&#xff1a; GitLab实现CICD自动化部署_gitlab cidi_程序员xiaoQ的博客-CS…