首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

VBA技巧:不保护工作簿情况下防止删除工作

标签:VBA 下面介绍一个使用少量VBA代码实现简单实用小技巧。 通常情况下,我们执行“保护工作簿”命令后,此时删除工作命令变成灰色,用户就不能轻易地删除工作了。...然而,这样也不能进行插入、移动或复制工作操作了。 如果想要在不保护工作簿情况下防止用户删除工作,而且允许用户插入工作其进行重命名,也允许用户移动或复制工作,有没有什么好方法实现?...工作簿ThisWorkbook模块中粘贴或输入下面的代码: Option Explicit Private Sub Workbook_SheetDeactivate(ByVal Sh As Object..." End Sub Sub RemoveProtection() '撤销保护工作簿 ThisWorkbook.Unprotect End Sub 此时,用户再要删除工作簿中工作,就会弹出...警告信息(如下图1所示),但用户仍可以工作簿中进行添加工作、移动或复制工作工作重命名等操作。 图1

1.8K30

mysql大不停机情况下增加字段怎么处理

MySQL中给一张千万甚至更大量级添加字段一直是比较头疼问题,遇到此情况通常如果处理?本文通过常见三种场景进行案例说明。...02 场景1 直接添加字段 使用场景: 系统不繁忙或者访问不多情况下,如符合ONLINE DDL情况下,可以直接添加。...,但是生产环境使用场景中操作使用最多还是使用工具pt-osc或gh-ost添加。...注: 无论是直接添加字段还是用pt-osc添加字段,首先都得拿到元数据锁,然后才能添加(包括pt-osc创建触发器和最后交换名时都涉及),因此,如果一张是热表,读写特别频繁或者添加时被其他会话占用...直接添加 如果读写频繁,数据量较小(通常1G以内或百万以内),直接添加即可(可以了解一下online ddl知识) 使用pt_osc添加 如果较大 但是读写不是太大,且想尽量不影响原读写

3.1K30
您找到你想要的搜索结果了吗?
是的
没有找到

Excel公式技巧14: 工作中汇总多个工作中满足条件

本文提供了一种方法,在给定一个或多个相同布局工作情况下,可以创建另一个“主”工作工作仅由满足特定条件所有工作数据组成。并且,这里不使用VBA,仅使用公式。...尽管工作名称中包含空格情况下,并不需要这样,但是这样做将更好更通用。这样,公式转换为: =SUMPRODUCT(COUNTIF(INDIRECT({"'Sheet1'!...实际上,技术核心为:通过生成动态汇总小计数量数组,小计数量由来自每个工作中符合条件(即在列D中值为“Y”)行数组成,然后将公式所在单元格相对行数与数组相比较,以便有效地确定公式所在行中要指定工作...、3和4应于工作Sheet1列D中为“Y”相对行号。...k值,即在工作Sheet1中匹配第1、第2和第3小行,工作Sheet2中匹配第1和第2小行,工作Sheet3中匹配第1小行。

8.8K21

Excel编程周末速成班第3课:Excel对象模型

对象引用重要性 要使用对象,你需要对其进行引用。只是代码中用于引用对象名称。有时对象已经存在,并且你代码需要做就是获取对象引用。...例如,Sheets集合中,唯一键是工作名称,因此: Sheets(1) 引用当前工作簿中第一个工作,而: Sheets(“销售数据”) 引用名为“销售数据”工作。...然而,ThisWorkbook需求可能并不明确,许多情况下,正在执行VBA代码位于代码所操纵同一工作簿中,因此不需要ThisWorkbook。...语法为: WB.Add(Before, After, Count) 参数都是可选: 参数Before,这是现有工作引用工作之前添加新工作。...参数After,这是现有工作引用工作之后将添加新工作。 参数Count,此参数指定要添加工作数量,默认值为1。

5K30

Excel宏教程 (宏介绍与基本使用)

工作索引号表明工作工作标签中位置:第一个(最左边工作索引号为1,最后一个(最右边 )为Worksheets.Count。...ActiveChart可以引用活动状态下图表,不论图表是图表工作,或嵌入式图表。而对于图表工作为活动工作时,还可以通过ActiveSheet属性引用之。...某些操作 能在选定区域内多个单元格块上同时执行;必须在选定区域内单元格块数Areas.Count上循环,每个单独单元格块分别执行操作。...before:=Sheets(1) ‘第1工作前添加新工作 Sheets.Add after:=Sheets(Sheets.Count) ‘最后工作后添加新工作 2、移动 ActiveSheet.Move...‘当前工作簿另存为”工作名.xls” 另存时,若指定存盘文件名包含路径,则保存在工作簿打开目录下。

6.3K10

Python 自动化指南(繁琐工作自动化)第二版:十四、使用谷歌表格

Sheet对象代表每个工作数据行和列。您可以使用方括号运算符和整数索引来访问这些工作。Spreadsheet对象sheets属性按照它们电子表格中出现顺序保存一组Sheet对象。...创建和删除工作 所有谷歌表格电子表格都以一个名为Sheet1工作开始。您可以使用createSheet()方法将额外工作添加到工作表列表末尾,向方法传递一个字符串作为新工作标题。...这里,您在索引0处创建标题为Bacon工作,使Bacon成为电子表格中第一个工作,并将其他三个工作替换一个位置。这类似于insert()列表方法行为。...但是大多数情况下,这个速度限制不会影响使用 EZSheets Python 脚本。谷歌表格也限制了你修改频率。...电子表格中第一个列是“每个罐子豆子”、“罐子”和“总豆子”。“总豆子”栏是“每罐豆子”和“罐子”栏中数字乘积。但是, 15,000 行中有一行有错误。手动检查行数太多。

8.4K50

MatLab函数xlsread、xlswrite、xlsfinfo

xlRange 为矩阵范围,指定为字符向量或字符串(区分大小写),使用 Excel 范围语法(使用 Excel A1 引用样式),用两个对角指定 xlRange,即要读取区域,比如 ‘D2:H6’。...data = xlsread(filename,sheet,xlRange,‘basic’) basic 导入模式下读取电子表格中数据(basic 模式用于系统未安装 Excel 情况下使用),...由于已经指定工作 sheet,xlRange 只能指定第一个单元(如 ‘D2’),xlwrite 将从单元格开始写入输入矩阵 A 。...[status,sheets] = xlsfinfo(filename) status = xlsfinfo(filename) 基础上,返回 filename 文件中每个工作名称到 sheets...sheets 为 1×n{1 \times n}1×n 字符向量元胞数组(每个元胞包含工作名称),其中 nnn 是文件中工作数量。

3.9K20

告诉你什么是Excel VBA对象模型及如何引用对象

过程会重复,直到到达包含任何其他对象对象。 通常,层次结构顶部对象是Application对象,即层级1对象是应用程序本身。...因此,集合是用于组合和管理其他对象对象。 某些情况下,集合非常有用。...Sheets,特定工作簿中所有工作集合,此时与工作类型无关,包含常规工作和图表工作引用对象 在编写VBA代码时,了解如何引用对象是至关重要。...注意,这只是基本引用框架,并没有实际识别单个VBA对象,即如果有几个工作簿或工作,如何知道引用哪个?...下面来看看一些简化引用情形。 情形1:Application对象 Excel总是假设你处理Application对象,因此,可以从引用中忽略对象。

4.3K30

Excelize 2.4.0 正式版发布, 新增 152 项公式函数支持

,不再为单元格设置空白字符串而以空值代替,解决 issue #756 移除内部处理单元格填充颜色样式时冗余 XML 可选空值解析标识 提升与 Google Sheets 离线浏览器扩展应用程序兼容性...,相关 issue #769 筛选器对应名称中使用绝对引用以提升与 Apache OpenOffice 应用程序兼容性,解决 issue #776 流式解析工作过程中增加 XML 标签关闭事件处理...,提升行/列迭代器读取性能,修复部分情况下读取行数有误问题 提高工作簿内工作文档使用相对路径兼容性 避免创建重复富文本样式,解决 issue #787 提高工作簿内工作文档使用绝对路径与 Windows...目录分隔符兼容性 问题修复 修复数值舍入精度问题 #764 添加并调整工作表字段解析顺序,修复部分情况下生成文档损坏问题 #766 修复 COTH 双曲余切三角函数计算有误问题 公式计算链增加对工作关联处理...修复工作默认自定义行高检查 修复取消工作中全部合并单元格时导致文档损坏问题, 解决 issue #782 修复部分情况下筛选条件部分丢失问题 修复当工作簿包含图表工作、对话工作时,UpdateLinkedValue

2.1K71

VBA高级筛选应用:拆分或更新子工作

其中心思想是创建一个唯一工作,其中包含与部门相关数据。因此,这里会为A、B和C分别创建一个工作。如果添加了任何新部门,则也为这些部门创建新工作。...图1 这将有效地使代码更长一些,因为需要对此进行测试,但它工作得很好。 下面的VBA代码有两个作用,它首先创建一个唯一列,然后基于唯一列使用高级筛选。...高级筛选是一个很好工具,因为它可以不使用复制和粘贴情况下完成上述操作。它可以轻松地工作之间移动数据,而且速度非常快。...接下来,代码需要循环遍历唯一列,这里使用了一个简单For循环,从第2行循环到M列中最后使用行。...For i = 2 To sh.Range("M" & Rows.Count).End(xlUp).Row 下一步是检查工作是否存在,这可以循环工作情况下有效地执行此操作。

1.5K20

前端必读2.0:如何在React 中使用SpreadJS导入和导出 Excel 文件

, Column } from ‘@grapecity/spread-sheets-react’; 此外,如果没有一些基本设置,SpreadJS 工作将无法正常工作,因此让我们创建一个配置对象来保存工作参数...但是,正如你 React 应用程序所期望那样,这些更改不会自动反映在其他组件中。为什么呢? 从仪表板接收数据后,SpreadJS 工作开始使用副本,而不是仪表板组件中声明销售数据。...我们希望将对工作所做更改传播到仪表板其余部分。因此,我们必须订阅一个事件来检测 Worksheet 组件单元格所做更改,并在 SalesTable.js 文件中实现相应事件处理。...你必须将此回调函数作为参数传递给 SalesTable 组件: export const SalesTable = ({ tableData, valueChangedCallback } ) => { 工作中单元格任何更改都会触发回调函数...SalesTable 组件中使用 SpreadJS 工作实例相同。

5.9K20

Go-Excelize API源码阅读(二十六)——SetSheetName(source, target string)、DuplicateRow(sheet string, row int)

工作名称最多允许使用 31 个字符,此功能仅更改工作名称,而不会更新与单元格关联公式或引用工作名称。因此使用此功能重命名工作后可能导致公式错误或参考引用问题。...可能,这里用k和v可读性不是很好~ 然后比较找到与参数oldName一致那张,也就是我们要修改工作名称那张。 然后将定位到Name赋值为newName。...例如,将名为 Sheet1 工作第 2 行复制到第 3 行: err := f.DuplicateRow("Sheet1", 2) 请谨慎使用此方法,这将影响所有工作中原有公式、图表等资源引用更改...如果工作包含任何引用值,使用此方法后使用 Excel 应用程序打开它时将可能导致文件错误。excelize 目前仅支持工作上部分引用更新。...看看该函数源代码: 该函数根据给定工作名称和行号,指定行后复制该行。

43810

Excel公式技巧25: 使SUMIFSCOUNTIFS函数内间接列引用变化

因此,我们有一个相对简单方法,可以从连续列中获得条件和。 但是,如果我们希望增加单元格区域是间接引用,那怎么办?...例如,如果我们使用上述公式版本,但所引用工作是动态: =SUMIFS(INDIRECT("'"&$A$1&"'!C:C"),INDIRECT("'"&$A$1&"'!...B:B"),"Y") 其中,A1包含要引用工作名称(例如“Sheet1”)。 当我们向右拖动此公式时,间接引用单元格区域不会改变。...A:A 而偏移列数等于: COLUMNS($A:B) 即2,于是传递到OFFSET函数后得到: Sheet2!C:C 然而,如果间接引用不是一个工作,而是多个工作,如何处理?...B:B"),"Y")) 其原理与上文所讲解单个工作版本相同。 注:本技巧整理自excelxor.com,有兴趣朋友对照原文研读,收获更丰。

2.5K20

Excel公式技巧17: 使用VLOOKUP函数多个工作中查找相匹配值(2)

我们给出了基于多个工作给定列中匹配单个条件来返回值解决方案。本文使用与之相同示例,但是将匹配多个条件,并提供两个解决方案:一个是使用辅助列,另一个不使用辅助列。 下面是3个示例工作: ?...图4:主工作Master 解决方案1:使用辅助列 可以适当修改上篇文章中给出公式,使其可以处理这里情形。首先在每个工作数据区域左侧插入一个辅助列,列中数据为连接要查找两个列中数据。...16:使用VLOOKUP函数多个工作中查找相匹配值(1)》。...注意,定义名称时,将活动单元格放置工作Master第11行。 名称:Arry1 引用位置:=MATCH(TRUE,COUNTIFS(INDIRECT("'"&Sheets&"'!...C:C"}),2012)>0,0) 转换为: =MATCH(TRUE,{0,0,1}>0,0) 结果为: 3 表明工作表列表第3个工作(即Sheet3)中进行查找。

13.5K10

仿Excel撤销功能

标签:VBA,工作事件 这是www.vbaexpress.com中看到一个示例,实现了自己以前想做而未做事情。...也就是,模仿Excel撤销功能,特别是当VBA代码工作进行操作后,使用Excel原始撤销功能是无法恢复,但可以使用VBA代码来实现,似乎就像Excel撤销功能一样。...主要思路是使用一个工作,来记录工作所做修改,如果要撤销这些修改,就从这个工作取出原来值来恢复。注意,本文示例只针对特定区域,且只能撤销两次。...("B" & x)) ' 创建ws1单元格区域引用 rCell.Value = wsU.Range("C" & x).Value ' 将之前值写回ws1 rCell.Offset...或者,完美Excel微信公众号中发送消息: 仿撤销功能 获取示例工作簿下载链接。 或者,直接到知识星球APP完美Excel社群中下载工作簿。

10310

Office Open XML学习(1)-创建excel文档,并向单元格中插入字符串

自从Open XML出现后,这种情况很大程度上得到了改观,Open XML已经逐渐成为一种办公文档通用国际标准了(标准基于XML格式),详情见百度百科 http://baike.baidu.com...FamilyID=c6e744e5-36e9-45f5-8d8c-331df206e0d0 安装完以后,就能直接使用了,下面的代码演示了,如何创建一个Excel文档,并创建一个工作"博客园",最后工作单元格...WorksheetPart worksheetPart = InsertWorksheet(excelDocument.WorkbookPart,"博客园"); //工作插入单元格...A1 Cell cell = InsertCellInWorksheet("A", 1, worksheetPart); //创建多个工作可共用字符串容器...工具还能将任何Open Document(即支持Open XML标准office文档),直接生成相应C#代码(很给力一个功能!)

2.6K100

VBA专题10-2:使用VBA操控Excel界面之设置工作

'隐藏第3个工作 Sheets(3).Visible =xlSheetVisible '取消隐藏第3个工作 可以通过下列方式引用特定工作: 1....工作标签名 2. 工作索引值(即在工作簿中工作标签位置)。即使工作被隐藏,其索引值不会改变。如果没有被隐藏工作,那么最左侧工作标签是工作簿中第1个工作,其索引值为1。 3....工作代码名称(VBE编辑器属性窗口中可以看到) 下面的代码展示了隐藏工作之前引用工作3种不同方法: '隐藏名为Sheet3工作 Sheets("Sheet3").Visible= xlSheetHidden...'隐藏工作簿中第3个工作 Sheets(3).Visible =xlSheetHidden '隐藏代码名称为Sheet3工作 Sheet3.Visible =xlSheetHidden 使用代码名称引用工作优点在于...:即便用户移动和重命名工作,或者添加工作,VBA代码将仍然引用是正确工作

4.6K40

Application主程序对象基础

3、调用excel内部函数。利用excel内置函数,可以减少代码编写工作量。 本节主要复习下对象引用,回顾下返回活动状态对象。内置函数会再后期介绍。...以最底层range单元格对象引用:如引用工作簿“工作”这个文件工作1”中A1单元格具体语句就是:application.workbooks(”工作.xlsx“).worksheets("...(如果没有活动工作则返回nothing) 4、activewindow属性 activeworkbook属性用来返回一个window对象,对象表示活动窗口。...(如果没有打开窗口,则发挥nothing。) 5、activeworkbook属性 activeworkbook属性返回一个workbook对象,对象表示活动窗口中工作簿。...8、sheets属性 sheets属性用来返回一个sheets集合,代表活动工作簿中所有的工作

78620

EXCEL VBA语句集300

‘当前工作中已使用行数 (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...(74) Sheets(“Chart2”).ChartArea.Interior.ColorIndex=2 ‘更改图表工作中图表区颜色 (75) Charts.Add ‘添加新图表工作

1.7K40
领券