- 帖子
- 2035
- 主題
- 24
- 精華
- 0
- 積分
- 2031
- 點名
- 0
- 作業系統
- Win7
- 軟體版本
- Office2010
- 閱讀權限
- 100
- 性別
- 男
- 註冊時間
- 2012-3-22
- 最後登錄
- 2024-2-1
|
17#
發表於 2016-5-3 17:38
| 只看該作者
回復 12# chaoyiho - Sub Ex()
- Dim arr As Variant, xs As Variant
- Static tf As Boolean
-
- tf = Not tf
- arr = Array("Sav", "Exh", "J.C.W", "P.C.O", "Pmax", "Stuffing Box", "F.O.", "Liner", "總表")
-
- For Each xs In srr
- Sheets(xs).Visible = tf
- Next
- End Sub
複製代碼- Sub Ex2()
- Dim arr As Variant, xs As Variant
- Dim tf As Boolean
-
- arr = Array("Sav", "Exh", "J.C.W", "P.C.O", "Pmax", "Stuffing Box", "F.O.", "Liner", "總表")
- tf = 1 + Sheets(arr(0)).Visible
-
- For Each xs In srr
- Sheets(xs).Visible = tf
- Next
- End Sub
複製代碼 Ex() 與 Ex2() 是屬於兩個不同宣告方式的應用:
但終其結果執行完後一樣是達成 『表單顯現』、
亦或『表單隱藏』的需求。
一、「型態宣告」:
Ex() 裡特意將 tf 宣告成一個靜態布林 (Static Boolean)
變數;亦即該函式 Ex() 一經啟用 tf 即為 False, 當你
將它的值改變了,例如:tf = Not tf, tf 值則由 False
變更為 True,當下一次再度進入到該函式 Ex() 裡執行時,
它的值依舊為 True 不變,除非它再次碰到 tf = Not tf
的重新給值; tf 的值即被修正成為 False。
此種方式經常用於某些函式於執行時,需用到函式
內部使用靜態保留值(非公用變數)作業環境的執行。這也是
為何要將它宣告成靜態布林 (Static Boolean) 變數的道理;
學習除了要能解決疑難雜症外,還須有『得以思考』的空間。
Ex2() 裡將 tf 宣告成一個布林型態 (Boolean) 的變數;它
在每次進入 Ex2() 函式裡時,該 tf 的值永遠為 False 值,
所以你必須每次要再重新給值;否則它的值是為 False 的;
這亦是內部動態變數的特徵 (初始值的給予)。
二、「變數值之給值」:
Ex() 函式裡 tf = Not tf;
tf 為一靜態布林 (Static Boolean) 變數,其第一次執行啟動
的初始值為 False 值,當第一次遇到 tf = Not tf 的給值,它則
修正為 True;於下次再次進入到 Ex() 函式裡 tf 的值依舊為 True
不變,除非它再次碰到 tf = Not tf 的重新給值; tf 的值始變為
False。它堅信的原則是不受外在函式的改變而影響其值的不當異動。
Ex2() 函式裡 tf = 1 + Sheets(arr(0)).Visible;
此處的 tf 的給值,是依據進入到 Ex2() 函式當時裡的第一個表單
Sheets(arr(0)).Visible 為 『表單顯現』、亦或『表單隱藏』而決定;
假設此時 Sheets(arr(0)).Visible 值為 -1 (表單顯現),則當 tf =
1 + Sheets(arr(0)).Visible 時;其值則修正為 0 (表單隱藏);
反之、 進入到 Ex2() 函式當時, Sheets(arr(0)).Visible 值為 0 時;
經過 tf = 1 + Sheets(arr(0)).Visible 的再重新給值;其值則又修正為 1
(表單顯現);
結論是:無論你應用何種型態或方式來處理;最重要的是你個人的思考方向、
與構思為何;無所謂的對錯是非問題,只有個人考量的角度思維之表達差異。
程式編撰技巧能否有所增進、突破個人思維的死角;只在於你個人的企圖心
及個人意境的追求完美罷了。 |
|