VBA-原地取消公式

VBA 基础知识整理(单元格,表,工作簿) '1、工作簿 ' Workbooks 代表工作簿集合,所有的工作簿,Workbooks(N),表示已打开的第N个工作簿 ' Workbooks ("工作簿名称") ' ActiveWorkbook 正在操作的工作簿 ' ThisWorkBook '代码所在的工作簿 '2、工作表 ' 'Sheets("工作表名称") ... 阅读详情

场景

访问博主博客主页获取更多实用小技巧!

不知道多少小伙伴和我一样,在用wps某个功能时,超级好用,但是office的excel中没有这个功能,例如,粘贴到可见单元格,如图:

WPS的原地粘贴

感谢人美心善的同事小姐姐提供截图(博主电脑没有wps,office永不为奴!)

诞生之路

甚至在好长一段时间,在用到此项功能时,博主特意关闭excel、打开wps、复制粘贴可见单元格、关闭wps、打开excel,做表。

那怎么办啊,这个功能实在太好用了,尤其是在有众多筛选的情况下,原地取消公式,而不用担心复制再粘贴的数据错行。(嘴上说着不要,但是身体还是挺诚实的)

为了彻底摆脱wps的依赖(wps:你也不想你的老公excel知道我们之间的关系吧!~),博主决定采用VBA曲线救国,我们excel要有自己的原地取消公式,不能受制于wps!

在这种思维浪潮下,VBA-原地取消公式3.0应运而生(别问为什么没有1.0和2.0)。

话不多说,上代码!

Sub DisFormulas()
    ' 源代码改编自博主Leon,欢迎访问并留言
    ' mxsleon.top
    
    
    Dim ws As Worksheet
    Dim sr As Range
    Dim cel As Range
    Dim sr_2 As Range
    Dim originalCalc As XlCalculation
    Dim originalUpdate As Boolean
    
    On Error GoTo ErrorHandler
    
    ' 设置当前活动的工作表
    Set ws = ActiveSheet
    
    ' 获取用户选择的区域
    ' 检查选择是否为单一单元格
    If Selection.Cells.Count = 1 Then
        Set sr_2 = Selection

    Else
        ' 获取用户选择中的可见单元格,并从中筛选出带有公式的单元格
        On Error Resume Next
        Set sr = Selection.SpecialCells(xlCellTypeVisible)
        Set sr_2 = sr.SpecialCells(xlCellTypeFormulas)
        On Error GoTo 0
        
        ' 如果没有找到符合条件的单元格,则退出子程序
        If sr_2 Is Nothing Then
        MsgBox "你没有选中任何有效的单元格!", vbExclamation, "退出!"
        Exit Sub
        End If
        
    End If
    
    ' 保存原始设置
    originalCalc = Application.Calculation
    originalUpdate = Application.ScreenUpdating
    
    ' 优化性能设置
    Application.Calculation = xlCalculationManual
    Application.ScreenUpdating = False
    Application.EnableEvents = False
    
    ' 遍历sr_2中的每个单元格,将其值替换为计算结果
    For Each cel In sr_2
        cel.Value = cel.Value
    Next cel
    
    
ErrorHandler:
    ' 恢复原始设置
    Application.Calculation = originalCalc
    Application.ScreenUpdating = originalUpdate
    Application.EnableEvents = True
    
    ' 显示完成消息
    MsgBox "所选单元格公式已取消,感谢leon!", vbExclamation, "完成!"
End Sub

请自行忽略其中乱七八糟的变量(在职场上,如果我牺牲了,我不希望我的代码被敌人捡起来就能使用!ps:何晨光的VBA是吧!)

由于主题设置的原因,所以VBA的代码主题的显示效果可能不是很好,大家可以直接复制到excel中的编辑器看效果。

VBA代码解释

Dim 区域设置关键的变量

Application.Calculation = xlCalculationManual

关闭当前工作表的自动重算,以提高VBA的运行速度,实测在大型工作表或公式繁多的表格中可有效提高速度;

后续代码中的循环每遍历一次,excel工作表中带有公式的相应单元格就要重算一次,如果不关闭自动重算,会浪费大量时间。

Set sr = Selection.SpecialCells(xlCellTypeVisible)
Set sr_2 = sr.SpecialCells(xlCellTypeFormulas)

设置两层筛选,

首层筛选筛选可见单元格,利用Range.SpecialCells方法,区域为Selection,即用户选择的区域,参数Type设置为xlCellTypeVisible,可见单元格,赋值给sr;

第二层筛选,区域为sr(首层筛选出的区域),方法一样,参数设置为xlCellTypeFormulas(带有公式的单元格)。

通过两次筛选即清理出用户想取消单元格的有效区域,防止后续遍历单元格做无用功(最主要的是节省时间,人生苦短,我用py…哦搞错了,我用VBA!)。

相应的方法、参数等文中加黑即为超链接,可点击跳转微软官方学习界面查看。

For Each cel In sr_2
    cel.Value = cel.Value
Next cel

循环区域,遍历经过筛选的每一个cel,使它们的值等于它们的值(好像废话,但VBA的语法就是这样,我也不明白)。

经过遍历之后,所选取区域的公式会被原地取消,相当于实现复制,原地粘贴的效果。

Application.Calculation = xlCalculationAutomatic

别忘了打开自动重算

MsgBox "所选单元格公式已取消,感谢Leon!", vbExclamation, "完成!"

核心代码!有以下几个作用:

主要作用:感谢博主(bushi)

提醒VBA已运行完成

总结

访问博主博客主页获取更多实用小技巧!

这段代码小巧精悍,日常使用率高,各位看官大人们可以把它添加到自定义功能区中,每次调用点击即可运行,方便快捷。

解决的问题有,实现了公式的原地取消,不必在重复取消筛选等繁琐操作。

未来升级点,可以针对性的加入判断代码,例如在大型表格中,加入提前判断,如果表格自动重算处于关闭状态,在运行完VBA后依旧关闭,而不是每次总是打开。

!请注意,由于VBA的固有特性,您在使用VBA后无法执行后退操作,请注意数据安全!!!(被坑过…)

Excel下拉菜单取消全攻略 本文详细介绍了如何在Excel中取消下拉菜单的步骤和注意事项。通过简单的几步操作,用户就可以轻松解除下拉菜单的限制,实现更灵活的数据输入。同时,本文还提供了利用VBA宏批量取消下拉菜单的高级技巧,以满足处理大量数据的用户需求。希望本文能够帮助用户更好地掌握Excel的使用技巧,提高工作效率。 阅读详情

相关推荐

Excel VBA自动化革命:从公式到数值的智能转换艺术

本文深入探讨了Excel VBA在自动化处理公式转换为数值方面的强大功能,提供了从基础到高级的多种解决方案。通过详细的代码示例和性能优化技巧,帮助用户高效处理单工作表、多工作表及批量工作簿的转换需求,显著提升数据处理效率。

weixin_29221753的博客 457

Vba菜鸟教程

文章目录Vba菜鸟教程编辑器宏vba基本语法运算符变量语句简写语句sub语句调用语句退出语句分支语句循环语句判断语句公式与函数在单元格输入公式利用单元格公式返回值调用工作表函数利用vba函数自定义函数操作对象操作工作簿操作工作表操作单元格事件工作簿事件工作表事件控件按钮弹窗输入框附表对齐方式字体格式填充 Vba菜鸟教程 官方文档:https://docs.microsoft.com/zh-cn/o...

WY_记录 4万+

【小熊学习】VBA学习

Range(“c16”) = “=SUMIF(A2:A6,”“b”“,B2:B6)” '遇到单引号就把单引号加倍。’ Workbooks 代表工作簿集合,所有的工作簿,Workbooks(N),表示已打开的第N个工作簿。'Sheet1 表示第一个插入的工作表,Sheet2表示第二个插入的工作表…'VBA中的对象其实就是我们操作的具有方法、属性的excel中支持的对象。'worksheet 也表示工作表,但不包括图表工作表、宏工作表等。'表示用某个方法作用于VBA的对象上,可以用下面的格式。

cyhfujfhtuff的博客 554

VBA【公式】依据 “=”将多行矩阵公式变成单行公式

此函数目前只能根据多行公式前的等于号=来判断,可能会有没有改到的情况,水平所限只能这样了。

sanrenliangduishi的博客 1377

VBA 自定义对话框

今天主要讲讲自定义对话框这一章,中间鸽了一小部分的函数过程,WindowsAPI、连接数据库的内容还没学,后续再更新。 一、inputbox inputbox输入框之前已经用过了,但是除了之前VBA中用的inputbox之外,还有Application对象中的方法,这两个是不一样的。 ①VBA中的inputbox函数用法: Dim str As String str = InputBox("请随便输入一串字符串") VBA中的inputbox函数完整方法: InputBox.

叶雪青的博客 4497

WPS公式失效全解析:从兼容性到VBA的深度排查与修复指南

公式功能是办公软件处理复杂数学表达式和科学计算的核心组件,其本质是基于特定语法和渲染引擎将符号代码转换为可视化数学公式。在WPS Office这类办公套件中,公式功能的稳定运行依赖于软件环境、组件配置、文档格式及宏支持等多层技术栈的协同。当公式功能失效时,其技术价值在于保障文档的专业性、数据的准确性和工作流的连续性,尤其在学术论文、财务报告和工程计算等应用场景中至关重要。本文聚焦于WPS公式失效这一常见痛点,深入剖析其背后可能涉及的软件兼容性冲突、组件注册表损坏、字体缺失以及VBA宏环境配置等底层原因,并提

weixin_33730836的博客 444

vba 修改下拉列表_Excel隐藏的超实用技能,涉及VBA技巧,建议【收藏】

干货预警!很多人都说越学Excel越觉得是个非常强大的软件,事实真的是这样吗?当然!今天小编就带大家来扒一扒咱们这款日产工作中不可或缺的Excel中隐藏的不为人知的小秘密,这些小秘密可是能在关键的时候帮大忙的~Excel自带的“照相机”功能很多人会觉得,“害,不就一个截图么,我Ctrl+Shift+A瞬间秒杀一切~然鹅,如果只是这么简单的截图功能,小编就不拿出来逼逼赖赖了,要知道这个可能是整个Ex...

weixin_39926639的博客 997

Fastjson2升级指南:如何平滑迁移并避免兼容性问题

本文详细介绍了Fastjson2的升级指南,涵盖兼容性检查、性能调优及零停机迁移方案。通过实战案例展示如何避免常见问题,如日期格式严格校验和字段映射策略变化,并分享高性能配置技巧如JSONB二进制协议和内存池化。帮助开发者平滑迁移至Fastjson2,提升JSON处理效率。

weixin_29016865的博客 411

小白福音——VBA编程常用——命令三百例

```vbnet * # Excel VBA编程常用语句300句 * 本文转自:**http://blog.sina.com.cn/codelee** 博主:**代码农夫** 感谢大佬总结并分享出来~ ************** # * VBA 语句集 * * (第 1 辑) * ************** **************** ## * 定制模块行为 * ****...

SugarWithSmile的博客 8777

SAPABAP金色传说:关于导入和导出Excel时反复弹窗提示 SAP GUI安全性问题的解决方法

文章目录前言一、提示的到底是什么?二、关闭SAP GUI安全提示的步骤1.设置位置 前言 如果你在SAP中,经常需要将数据导出Excel,或者使用Excel进行批导数据,那么你对下面这个频繁出现的弹窗提示一定不陌生! 系统试图创建文件 C:\Users\15265\Desktop\EXPORT.XLSX 于目录 C:\Users\15265\Desktop\ 是否要授权修改父目录及其所有子目录? 不管你是不是选的记住我的决定,它必出!就很烦!那如何处理才能关闭呢? 提示:以下是本篇文章正文内容,看完快

Easystudios博客 1万+

Oracle EBS报表开发入门:Report Builder安装避坑指南(Win10/11兼容版)

本文详细介绍了在Windows 10/11系统上成功安装和配置Oracle Report Builder的完整避坑指南。通过修改系统兼容性、解决虚拟内存报错、正确设置NLS_LANG和TNS连接等关键步骤,确保开发环境稳定运行。同时,阐述了Report Builder与BI Publisher在现代Oracle EBS报表开发中的协作定位与工作流,帮助开发者高效搭建报表开发环境。

d6e7f8的博客 754

EXCEL常用函数公式和VBA汇总

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 1.test01 excel生成目录 2.test02 打开全部隐藏工作表 3.test03 多个工作表汇总到一个工作表 4.test04 隔m列(行)插入n列空白列(行) 5.test05 合并工作簿 6.test06 更改工作表名 7.test07 解除excel结构限制 8.test08 解除工

用余生去守护的博客 2172

【日常小结】项目Modbus RTU 协议

Modbus RTU(远程终端) 协议 一、前言 最近因为码跺宽度测量项目推广升级,更换了摄像头(换成了基恩士摄像头)和光栅(换成了施莱格05LCM系列光栅),导致原来的程序用不了了,然而这个软件升级的任务落到了我身上,作为机械非科班出身的我要学习TCP和Modbus RTU通信协议,也算是自我突破了。本文只对Modbus/RTU/HEX 进行简单的小结。 二、Modbus Modbus是一种串行通信协议,是Modicon公司(现在的施耐德电气Schneider Electric)于1979年为使用可编程逻

weixin_39681471的博客 831

java防止vba注入,通过VBA复制公式时,防止Excel单元格受到保护

我正在使用VBA代码在Excel 2016工作表中插入新行,然后将公式从上面的行复制到新行,这样我就不必手动插入它们 . 不幸的是,复制公式后,插入公式的单元格受到保护 . 这带来的缺点是,如果我犯了错误,我就无法删除新行 . 这是我的代码 .Private Sub Worksheet_Change(ByVal Target As Range)' Disable events to prevent...

weixin_35252979的博客 634

Unity Spine动画控制全攻略:播放、回调与停止的实战技巧

本文深入解析Unity中Spine动画的核心控制技巧,涵盖动画播放、轨道分层、事件回调与平滑停止等实战方法。通过封装SpineAnimationController,详细讲解了如何利用动画播放结束回调实现精准的游戏逻辑同步,并提供了避免内存泄漏和动画卡顿的避坑指南,助力开发者打造流畅专业的2D游戏动画系统。

weixin_29021291的博客 378

037、有源钳位反激变换器(ACF)原理

文章摘要 有源钳位反激变换器(ACF)是一种克服常规反激电路漏感能量处理瓶颈的高效解决方案。文章从实际炸机案例切入,指出RCD钳位电路在高压、宽范围、高功率场景下的局限性。ACF通过增加钳位管和钳位电容,将漏感能量回收而非消耗,实现效率提升2-3%、精准电压钳位和更好EMI性能。文章详细解析了ACF四阶段工作过程、关键波形特征,并指出设计陷阱:漏感需保持1%-3%特定范围、钳位电容ESR要求严格、需专用控制IC支持互补驱动。最后给出实用调试建议,强调ACF适用于65W+功率场景,低压验证后再逐步升压的调试方

Jack010169的博客 262

Excel VBA小程序-如何快速将整个工作簿的公式转换为数值

根据操作范围,这可以分为三种情况。 ❶多工作表公式转数值 ❷多工作簿公式转数值 1、多工作表公式转数值 如果是将当前工作簿所有工作表的公式转换为数值,需要使用到VBA代码。 Sub FunctionTransValue_Sheets() Dim sht As Worksheet For Each sht In Worksheets '遍历工作表 sht.UsedRange.Value = sht.UsedRange.Value Next MsgBox "ok"

Nemuel的博客 8799

ATE FT ChangeKit学习总结-20250630

半导体封装测试中的ChangeKit是Handler测试机的关键配套治具,主要用于适配不同芯片封装尺寸的FT测试。其主要特点包括:1)适应性,可快速切换不同测试设置;2)精准性,确保器件测试安全;3)高效性,减少停机时间。主要组件含Shuttle传送机构、HotPlate预热盘、DockPlate连接件和Contactor压头。设计需考虑Handler型号、芯片规格及PCB匹配(如140mm标准孔位),特别在低温测试时需注意吹气块布局。ChangeKit实现了测试设备的灵活配置,提升了半导体测试效率。

歌颂苦难的行为是无耻的; 1752

【VBA研究】VBA的InputBox函数和Application的InputBox方法

iamlaosong文 VBA编程时inputbox 有两种用法,一个是inputobx函数,一个是application.inputbox方法,两者用法差不多,差别在后者多了输入类型,导致返回值也有很大不同。 1、inputobx函数在输入字符串后点击“确认”按钮返回字符串,如果需要数值,可以用val函数转换,点击“取消”则返回空字符串。其用法如下: InputBox(prompt[,ti

驽马十驾 才定不舍 3万+

碰撞检测 | 图解视线生成Bresenham算法(附ROS C++/Python/Matlab实现)

Bresenham视线生成是一种高效的算法,用于在二维网格上绘制直线。Bresenham算法可以应用在栅格地图中进行一维碰撞检测,即检查起点和终点间直线是否穿过障碍栅格。本文图解Bresenham碰撞检测的原理,并给出ROS C++/Python/Matlab三种实现加深理解

FRIGIDWINTER的博客 1万+

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

python win32com + VBA宏 操作Excel,清除Excel中的公式

最近有个需求是自动化清楚excel中的公式,尝试了使用openpyxl读取的时候不加载公式,但这样的结果是使用了公式的数据出不来,经过测试发现可以使用win32com,win32com是物理操作的,相当于模拟人工操作,这个工具实在太好用了,还可以截图等一列神操作。......

weixin_41259961的博客 1361

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

VBA代码解决方案第十讲:利用VBA代码完成复制

VBA代码解决方案》(版权10028096)这套教程是我最早推出的教程,目前已经是第三版修订了。这套教程定位于入门后的提高,在学习这套教程过程中,侧重点是要理解及掌握我的“。要灵活运用教程中的实例像搭积木一样把自己喜欢的代码摆好。这套教程共三册,一百四十七讲,内容覆盖较广,也是初级和中级间的过渡教程,改版后的内容主要是提供程序源码文件及代码修正为32位和64位兼用代码。今后一段时间会给大家陆续推出。今日的内容是VBA代码解决方案第十讲:利用VBA代码完成复制。

VBA语言専攻 1945

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Excel VBA调试技巧:解决宏被禁用、公式不更新等15个常见问题

Excel VBA是提升办公效率的强大工具,但新手常因调试问题受阻。本文整理15个高频问题的解决方案,从宏安全设置到公式更新故障,助你快速定位并修复错误,让VBA宏稳定运行。 ## 一、宏安全与启用问题 ### 1.1 宏被禁用:Microsoft已阻止宏运行 **症状**:打开文件时提示"安全风险:宏已被管理员阻止",无法执行VBA代码。 **解决步骤**: 1. **解除文件锁定*

gitblog_01074的博客 1119

Excel VBA语句集

只有在那些进退维谷的境遇中以全部生命的力量与命运做抗争的人,才格外难能可贵,才显现出一种真正强悍和超然的英雄本色。

用余生去守护的博客 1857

vba 已隐藏的方式打开excel_Excel – 文件每次打开都很卡,可看似只有几行数据,怎么解决?...

经常听到小伙伴们抱怨说 Excel 非常大,导致打开、运行时非常卡,但是看来看去,一共也没几行数据,怎么会这样呢?怎么优化表格呢?通常出现这样的问题,大多是因为以下几种原因,请一一对应解决方法。原因 1:前任移交的表格有很多已经不需要的隐藏 sheet,导致表格数据过大。解决方案 1:关于隐藏和取消隐藏工作表的多种方式,可以参见 Excel实用tips(12) – 批量隐藏工作表这里我快速总结一下...

weixin_39533280的博客 1523

vba屏蔽Excel中的菜单功能

1、屏蔽“菜单”中的项: Application.CommandBars(1).Controls("文件(&F)").Enabled = False '屏蔽文件菜单 Application.CommandBars(1).Controls("编辑(&E)").Enabled = False '屏蔽编辑菜单 Application.CommandBars(1).Controls(...

qq_23587541的博客 4590
上一篇: pyautogui-让所有GUI都自动化!
下一篇: Faker-生成假数据/测试数据
mxsleon
博客等级 码龄3年 88粉丝 8原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值