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

news2024/11/25 15:39:38

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) (理解工作表中的名称

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux基础与应用开发系列九:各类系统函数与标准IO函数

open_close函数 OPEN函数 头文件&#xff1a; #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> 函数原型&#xff1a; 当文件存在时 int open(const char* pathname,int flags) 当文件不存在时 int open (const char* pathname,int f…

(黑客)自学误区

一、自学网络安全学习的误区和陷阱 1.不要试图先成为一名程序员&#xff08;以编程为基础的学习&#xff09;再开始学习 行为&#xff1a;从编程开始掌握&#xff0c;前端后端、通信协议、什么都学。 缺点&#xff1a;花费时间太长、实际向安全过渡后可用到的关键知识并不多…

【2023最新美团笔试题目分析】“求最多出现数字及次数“、坦克大战在线对战游戏(问题描述 + 示例代码 + 时间复杂度分析)

弃幼少嬉戏堕慢之心,而衎衎于进德修业之志。 🎯作者主页: 追光者♂🔥 🌸个人简介: 💖[1] 计算机专业硕士研究生💖 🌿[2] 2023年城市之星领跑者TOP1(哈尔滨)🌿 🌟[3] 2022年度博客之星人工智能领域TOP4🌟 🏅[4] 阿里云社区特邀专家博主

光致发光二极管光源——荧光效率检测系统

发光二极管&#xff08;LED&#xff09;光源已经逐步地取代传统光源&#xff0c;并在生产和生活中得以广泛应用。荧光粉在LED照明设备中起到了至关重要的作用&#xff0c;其功能为将转换芯片所产生的紫外或者蓝光&#xff0c;发射出目标颜色的光。近年来&#xff0c;人们为了提…

计算文本相似度

目录 Python中的difflib模块模块用法报告涉及的符号实现文本对比普通文本对比文本对比生成HTML报告 余弦相似度sklearn安装使用sklearn的余弦相似度词袋模型 Jaccard相似度编辑距离&#xff08;Levenshtein距离&#xff09;TF-IDFWord2VecDoc2VecBERT结论 Python中的difflib模块…

使用阿里云服务器搭建Discuz论坛网站教程基于CentOS系统

阿里云百科分享使用阿里云服务器建站教程&#xff0c;本文是搭建Discuz论坛&#xff0c;Discuz!是一款通用的社区论坛软件系统&#xff0c;它采用PHP和MySQL组合的基础架构&#xff0c;为您提供高效的论坛解决方案。本文介绍如何在CentOS 7操作系统的ECS实例上搭建Discuz! X3.4…

如何使用 ESP-01S 模块

如何使用 ESP-01S 模块 原始PDF文档 参考&#xff1a; 将 ESP-01 用作 WiFi shield的更好方法 (e-tinkers.com) How do I use ESP8266 ESP-01S WiFi Module with ESP-01S Adapter - Using Arduino / Programming Questions - Arduino Forum ESP-01S WiFi 模块 – 配置布线 -…

自动化测试是什么?自动化测试学什么?自动化测试面试题及答案?--看完后吊打面试官

一、前言 最近有童鞋和我抱怨&#xff0c;说网上很难搜到那些全面又合适的自动化测试面试题&#xff0c;这里根据我个人的经验以及收集整理的&#xff1a; 你没看错&#xff0c;不慌&#xff0c;慢慢来。 先从什么是自动化测试开始说起哈&#xff01; 二、什么是自动化测试&…

点淘的MCN机构申请详细入驻指南!

消费趋势的变化&#xff0c;来自消费人群的变化。 后疫情时代&#xff0c;经济复苏的反弹力度不足&#xff0c;人们开始怀疑我们正从前几年的消费升级&#xff0c;跌入消费降级的时代&#xff0c;但这并不能准确概括消费市场的变化。 仔细翻看各大奢侈品集团的财报&#xff0…

Android高通8.1 Selinux问题

1、最近客户提了一个需求&#xff0c;说要在user版本上面切分辨率&#xff0c;默认屏幕分辨率是2.5 k 执行adb shell指令之后变成 4k 然后adb shell wm size可以查看 2、一开始我能想到就是在文件节点添加权限&#xff0c;这里不管是mtk还是qcom&#xff08;高通平台&#xff…

MySQL中用什么数据类型存IP地址

提到IP地址(IPv4)&#xff0c;我们脑子里肯定立马浮现类似于192.168.0.1、127.0.0.1这种常见的IP地址&#xff0c;然后结合这个问题“MySQL中用什么数据类型存IP地址&#xff1f;”&#xff0c;于是乎脱口而出用char字符串类型存储。 然后再仔细想想发现&#xff0c;这个IP地址…

揭秘程序员和技师的7大共同点,最后一点绷不住了

大家好&#xff0c;这里是程序员晚枫&#xff0c;周末朋友出去放松回来&#xff0c;给我分析了一下程序员和技师的7个相同点&#xff0c;尤其是最后一点让我彻底绷不住了&#xff01; 我也分享给大家。 1、都有工号。98号技师&#xff0c;380号技师大家都很熟悉了&#xff0c…

阿里云服务器手动搭建FTP教程(Windows操作系统)

阿里云百科介绍使用阿里云服务器搭建FTP教程&#xff0c;云服务器为Windows操作系统&#xff0c;当需要远程连接Windows实例进行文件传输时&#xff0c;可以通过搭建FTP站点实现。本文将介绍如何在Windows实例中搭建FTP站点。 目录 准备工作 步骤一&#xff1a;添加IIS以及F…

ssm亚盛汽车配件销售业绩管理统源码和论文PPT

ssm亚盛汽车配件销售业绩管理统源码和论文PPT007 开发工具&#xff1a;idea 数据库mysql5.7(mysql5.7最佳) 数据库链接工具&#xff1a;navcat,小海豚等 开发技术&#xff1a;java ssm tomcat8.5 研究的意义 汽车配件销售类企业近年来得到长足发展,在市场份额不断扩大同时…

震惊!有人使用C语言实现三子棋游戏~

大家好&#xff0c;欢迎观看Mr.kanglong的CSDN博客&#xff0c;今天和大家讨论的是如何使用C语言来实现三子棋游戏。相信大家儿时或多或少玩过三子棋游戏&#xff0c;那么怎么用C语言实现这样一个游戏呢&#xff1f;且听亢龙娓娓道来~ 目录 三子棋介绍 游戏效果 实现代码 gam…

AIGC技术揭秘:探索火热背后的原因与案例

文章目录 什么是AIGC技术&#xff1f;为何AIGC技术如此火热&#xff1f;1. 提高效率与创造力的完美结合2. 拓展应用领域&#xff0c;创造商业价值3. 推动技术创新和发展 AIGC技术案例解析1. 艺术创作&#xff1a;生成独特的艺术作品2. 内容创作&#xff1a;实时生成各类内容3. …

电流的测量(反馈电流表)

另一方面&#xff0c;反馈电流表使用不同的方法来产生电流测量&#xff08;见图 3&#xff09;。他们使用有源跨阻放大器将电流转换为电压读数。电压输出是电流输入的倒数乘以反馈电阻器 R F的值。 V输出 -I输入* R F 图 3. 反馈电流表方法使用有源跨阻放大器将电流转换为…

uniapp 用 hbuilderx下载 uview

uView2.0重磅发布&#xff0c;利剑出鞘&#xff0c;一统江湖 - DCloud 插件市场 1.uniapp官网下载资源 2按下载 3.官网安装文档 要按 这个红色圈错了 然后看他的配置步骤 第四easycom 就可以 不用配了

【正点原子STM32连载】 第二章 APM32简介摘自【正点原子】APM32F407最小系统板使用指南

1&#xff09;实验平台&#xff1a;正点原子stm32f103战舰开发板V4 2&#xff09;平台购买地址&#xff1a;https://detail.tmall.com/item.htm?id609294757420 3&#xff09;全套实验源码手册视频下载地址&#xff1a; http://www.openedv.com/thread-340252-1-1.html# 第二…

LNMP环境介绍和搭建

一.LNMP简介 1.含义 2.工作原理 二.部署LNMP环境 1.Nginx环境 &#xff08;1&#xff09;上传nginx包&#xff0c;下载编译安装工具并解包到指定目录&#xff08;tar 参数 tar包 - C 目录路径&#xff09; &#xff08;2&#xff09; 开始编译安装&#xff0c;每次编译后…