請教一下VBA抓空白儲存格底色的語法

我做了個macro

主要是要在選取的格上填入設定內的底色等..

但後來又多做了個選項.以方便選了底色後,覺得不好看時能還原回先前原來的底色

但問題來了.

我原本要儲存原先底色之值的變數假設為BGColor

語法寫成如下

Do While i <> 1

  BGColor = Selection.Interior.Color '將原本底色色值取出

  i = 1

Loop

 

可是奇怪的來了,明明原本的儲存是白色(EXCEL開啟時所見的格子底色)

Q1:

但當我利用了 Select case ~~End select  來做自選時、、

當選了還原原先底色的設定值時..

其格子的底色卻變成黑色的了..

請教這是何故呢?

 

================

Q2

另外我還想多請教一下邏輯的問題,若有大大知道望請提點一二

如上所述,原本我是沒有要還原底色的

所以利用select case.~~end select

都很方便..

但當加入判別條件時,先排除問題1中底色不知何故存成黑色

我利用變數 i 來讓BGColor去儲存格內的色值

不過當我巨集完了,他下回再次執行時(在該活頁簿未關閉的前提下)

巨集又會自動把 i 的初始值設為0,,然後呢又跑進去do while裡抓格內的底色值了..(可是目前這格內的色值已變為我第一次更改的值了..)意指我還是無法達成讓它恢復原表格內的底色..= =

我後來將 i 改為全域變數..但問題還是一樣....

所以應該是邏輯打結了.

畢竟巨集跑完了..它理應就是會當成 i =0 然後再次跑do while

不過改成全域變數,不是它會記錄到使用者關閉活頁簿才清除嗎?

也就是說我執行第一次程序時,i 會由0 變1 ,但第二次再執行時,i 應該還是為1...但我不曉得為何它還是變成0..然後又去跑do while.了..

以上感謝諸位解惑..

MaverickRay wrote:
我做了個macro主...(恕刪)


呃,怪了,要問的程式碼在?沒看到啊?

是不是該把檔案丟上來?

MaverickRay wrote:
不是它會記錄到使用者關閉活頁簿才清除嗎?
您確定有查過全域變數的用法?

是程式結束,就清除了吧?
Der,misser1
misser wrote:
呃,怪了,要問的程式(恕刪)

程式碼就我述的那幾句而已..
因為模組有些多,忘了丟在哪了..所以才會這樣敍述..
記憶中.不超過十行吧..
我主要就是想問..要取得原始格內的底色
其語法是否是我寫的
x = selection.interior.color
這陳述式是否有誤?
因為我用這陳述式用著另撰的sub來試
結果貼回去的底色也會變黑的..真的很古怪
MaverickRay wrote:
x = selection.interior.color


陳述式是沒問題,所以問題應該就是在您寫的程式碼,......您不把完整的程式碼(檔案)丟上來,實在是愛莫能助。

~~問題應該就隱藏在您其他程式碼陳述、或是整個邏輯運作(是否有矛盾或遺漏之處)........
Der,misser1
misser wrote:
陳述式是沒問題,所以(恕刪)


好,先謝謝你,我晚些時再來找找看..
早知如此,就該先規劃分類一下..
文章分享
評分
評分
複製連結

今日熱門文章 網友點擊推薦!