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给科学家们支一招!—— 怎样快速定制工具栏按钮...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 有部队水印的光盘怎么打开
- 下一篇: python矩阵行秩函数_为什么矩阵行秩