this.$modal.confirm 自定义按钮关闭_Excel迫使人类基因重命名?用VBA给科学家们支一招!—— 怎样快速定制工具栏按钮...
点击上方蓝色文字关注我们吧~
大家好!前几天有一个不大不小的科技新闻引起了很多朋友的共鸣:
-NO.01-
为什么Excel会让科学家犯愁?
— — — —
之所以说它能引起共鸣,是因为科学家们遇到的这个问题,对于我们各行各业的Excel用户来说都已经非常熟悉,那就是Excel在数据类型转换方面的“过度人性化”。
比如我们受命维护一个“秘密特工通讯录”,那么打开工作表后随便找个单元格,输入特供编号“007”,结果看到的就只有一个数字“7”。
结果本来一个听起来很酷的代号“凌凌漆”,就这样变成了 “特小七” 。
同理,科学家们也有一样的烦恼:很多基因的名字都是英文缩写形式,因此经常出现 SEP1、MARCH1这样的名字。它们的本意是英文全称 Strand Exchange Protein 1和Membrane Associated Ring-CH Type Finger 1 的缩写;但总所周知,Sep在英文里也是九月(September)的缩写,而March干脆就是三月的意思。所以当我们在Excel中输入这两个基因名称时,Excel当即就会把它们转换为日期类型:
事实上,即使我们马上意识到这一点,也无法再把它自动改回字符串“MARCH1”。因为我们在《全民一起VBA 提高篇》中讲过,Excel的日期类型其实就是一个数字,所以即使再把单元格格式设置为“文本”,显示的也是这个数字的文本形式:
更要命的是:上面一切操作都是Excel强制执行的,根本没有提供关闭自动转换功能的按钮,大概微软认为这种转换对所有用户都是最好的吧。所以科学家们实在无法忍受、只能给基因们改名大吉。
这就是“Excel自动转换导致人类基因被迫改名”的原因
-NO.02-
怎样用VBA 关闭自动转换?
— — — —
生物学家可以给基因改名,但是其他行业怎么办呢?没关系,Excel没有关闭转换功能的按钮,我们就自己做一个!比如下面的样子:我们自己开发一个“文本格式”按钮,只要按下去,再输入任何内容,都不会发生自动转换。
这个功能是怎样实现的呢?其实非常简单 —— 一行代码就能搞定。大体来说,它的思路就是:
1. 编写一个宏,一旦运行,就能够将当前工作表中所有单元格的格式,设置为“文本”类型。这样再在工作表中任何一个单元格输入数值,都会以原来的文本方式显示;
2. 办法在Excel的选项卡中添加一个按钮,然后把这个宏关联到该按钮上,于是每次启动Excel都可以使用这个功能。
对于第一步,我们已经知道,“当前工作表”在VBA中用 Application.ActiveSheet 对象表示(Application可以省略),“全部单元格” 则可以用这个工作表对象的Cells属性表示。
而对于“设置单元格格式”的操作,只要录制一个宏就能发现,它调用的是Cells的NumberFormatLocal 属性。如果把这个属性设置为 “@”,就代表 “文本类型” ;而设置为“G/通用格式” ,就代表 “常规” 模式,即自动转换。
结合这两点,我们就可以写出两个宏,功能分别是 “将全部单元格设为文本格式” 和 “将全部单元格设置为常规(自动转换)格式”。
于是,短短两行代码,就可以对单元格格式自动切换
-NO.03-
怎样把这两个程序做成Excel工具栏按钮?
— — — —
这样两行代码,我们所有的程序就写好了!接下来要解决的就是第二个问题:怎样把这两个宏做成Excel的工具栏按钮?
我们在《全民一起VBA 实战篇》中曾经介绍过用“加载项”方式实现工具按钮的方法。不过今天,我们再介绍另一个思路:使用Personal.xlsb 文件定制功能区!
首先,我们可以随便录制一个宏。这时Excel会弹出一个对话框,询问我们将这个宏保存到什么地方:
在这个对话框中,请选择“个人宏工作簿”,于是Excel就会自动创建一个名为“Personal.xlsb”的模板文件,保存在系统默认的文件夹中。而神奇的是:将来在本台电脑上,任何时间打开Excel,这个Personal.xlsb都会被自动加载进来。因此,凡是写在这个工作簿中的VBA宏,都可以像Excel自带功能那样,随时供我们使用。
于是录制完这个宏之后,我们再打开VBA编辑器,就可以看到左边工程浏览器中多了一个PERSONAL.XLSB。在这个项目中新建一个模块,然后把刚才我们自己写好的两个宏保存到其中,就意味着我们随时可以调用这两个宏,设置单元格格式为文本或常规了。
接下来,在Excel工具栏上点击鼠标右键,选择“自定义功能区”:
然后在弹出的“自定义功能区”对话框右侧,首先点击“新建选项卡”按钮,创建一个自己的选项卡并命名(比如下图的“个人工具”);再点击“新建组”按钮,在该选项卡中创建一个分组并命名(比如下图的“统一单元格类型”):
接下来就是最后一步!仍然是这个对话框,在左边的“从下列位置选择命令”下拉菜单中,选择“宏”,就可以看到我们写在Personal.xlsb中的两个VBA程序:
然后在对话框右侧的栏目中选中我们刚刚创建好的选项卡和分组,再点击对话框中间的 “添加” 按钮,就可以将这两个宏添加为工具栏分组中的两个按钮。添加进来之后,再点击下面的“重命名”按钮,就可以给这两个按钮指定名字和图标:
现在关闭所有对话框,再回到Excel中就可以看到我们自定义的选项卡,以及其中的两个按钮了!只要点击,就可以自动运行ActiveSheet.Cells.NumberFormatLocal = "@" 这一句,将整个表格设为文本格式。
提醒:本方法只适用于2013以上版本的Excel
当然,这个方法远远谈不上完美,真正的解决之道还是要请微软给Excel添加一个关闭自动转换的开关。但是通过这个小实验,我们可以学会一种简易的自定义工具栏方法、把自己编写的VBA程序做成功能按钮,所以还是很值得一试的。只是要注意:本方法只对Excel2013及以上版本适用。
~END~
更多精彩阅读
接下来,我们会怎么走 —— 关于新的课程和教学方式
不变的,是初心 —— 写在又一门课程收尾之际
为什么又是游戏?—— 摘一段二十多年前的青涩文章
扫码听课
杨老师课程全集
全民一起玩Python
全民一起VBA
欢迎加入、一起进步
this.$modal.confirm 自定义按钮关闭_Excel迫使人类基因重命名?用VBA给科学家们支一招!—— 怎样快速定制工具栏按钮...相关推荐
- this.$modal.confirm 自定义按钮关闭_【勤哲资料】7.6 自定义打印
自定义打印 通常情况下,我们填报了一份表单,若想打印的话,直接利用Excel本身的打印功能就可以了,但是在某些情况下,Excel的打印功能就不能完全满足我们的需要了,例如: 套打 把合计行作为页尾,每 ...
- this.$modal.confirm 自定义按钮关闭_自定义函数,让你玩转Excel得心应手
让"自动更正"输入统一的文本,你是不是经常为输入某些固定的文本,如<电脑报>而烦恼呢?那就往下看吧. 1.执行"工具→自动更正"命令,打开" ...
- 最新QT从入门到实战完整版(08.qt中的坐标系-09 信号和槽-点击按钮关闭窗口_)
最新QT从入门到实战完整版(08.qt中的坐标系-09 信号和槽-点击按钮关闭窗口_) 一.08.qt中的坐标系 二,09 信号和槽-点击按钮关闭窗口_ 来自 一.08.qt中的坐标系 二,09 信号 ...
- abap选择屏幕工具栏按钮问题
选择屏幕的工具栏按钮?听上去好像就是SE80创建report的时候,新增加一个GUI状态嘛,对不对?其实不是的. 我们先看一个普通的report程序 不就是这样嘛? 我们运行这个report看看 点击 ...
- 【MFC】工具栏按钮的热点效果
00. 目录 文章目录 00. 目录 01. 案例概述 02. 开发环境 03. 关键技术 04. 程序设计 05. 秘笈心法 06. 源码下载 07. 附录 01. 案例概述 工具栏按钮的热点效果可 ...
- js点击取消按钮关闭当前弹框_js关闭当前页面(窗口)的几种方式总结
1. 不带任何提示关闭窗口的js代码 代码如下: 关闭 2.自定义提示关闭 代码如下: // 这个脚本是 ie6和ie7 通用的脚本 function custom_close(){ if (conf ...
- HTML页面中点击按钮关闭页面几种方式与取消
1.不带任何提示关闭窗口的js代码 1 <input type="button" name="close" value="关闭" on ...
- qt 关闭窗口的槽函数_勇哥的VC++应用框架学习之QT(1) 信号槽、按钮控件、opencv读取显示图片...
前言勇哥对于C语言,C++早些年有一些接触,这个系列贴子就记载一下C++应用框架的学习经验. 在写程序时,UI.基础类库.应用程序框架对于vc来讲,只能依靠MFC和QT了. 勇哥对MFC有很强的抵触, ...
- HTML_页面点击按钮关闭页面的几种方式
HTML页面点击按钮关闭页面的几种方式 文章目录 HTML页面点击按钮关闭页面的几种方式 一.不带任何方式的关闭窗口 二.提示之后关闭页面 三.点击关闭本页面并跳转到其他页面 四.将 三 中的方法放到 ...
最新文章
- 用Windows系统实现RAID功能
- javascript感叹号1_「翻译」JavaScript的可视化学习之三:作用域(链)
- java map常用类及其方法_Day50.Map类常用的方法 -Java常用类、集合#、IO
- [Python图像处理] 四.图像平滑之均值滤波、方框滤波、高斯滤波及中值滤波
- C语言中const的用法
- rowid 对应mysql_请教一下相当于MySQL中Oracle的RowID
- python 免费空间_总算找到php免费空间
- 避免一个用户多次登录修改版
- maskrcnn还可以加网络吗_绿茶加蜂蜜的功效,绿茶可以加蜂蜜吗?
- 母版页(Master Pages)--轉載
- 触发器及其应用实验报告总结_双面喷绘材料的分类及其应用,超全总结!(建议收藏)...
- bzoj1013 [JSOI2008]球形空间产生器sphere
- UI设计灵感|如果你想设计一款有趣的状态提示,看这里OOPS!
- (十)用于面部识别的混合边缘人工智能:下一步
- html背景图片只显示一张图片,img只显示图片一部分 或 css设置背景图片只显示图片指定区域(示例代码)...
- linux第三课:一些注意点
- 总结—每个程序员都应该了解的固态硬盘知识
- IOS微信浏览器返回事件popstate监听
- Code Review(自评)
- JAVA常用关键字和英文缩写
热门文章
- nor flash启动与nand flash启动的区别
- Github 个人首页档案资料卡 README 自述文件
- 如何在一个.c文件里调用另一个.c文件里的变量
- 5.2.3 OS之I/O设备的分配与回收(DCT-COCT-CHCT-SDT)
- 3.1.6 OS之分页存储(页号、页偏移量等)
- percona+mysql插件_使用percona mysql插件来监控mysql5.7
- 算法练习day11——190329(平衡二叉树、搜索二叉树、完全二叉树)
- 命令 / Linux / netstat 详解
- 32 位和 64 位 OS 下的各种数据类型的大小
- 启明云端分享|ESP32-C3(ESP32C3MINI1)使用的RISC与CISC有什么区别