如圖片所示。現在想讓有顏色所在列的下一格有資料改變的時候就會自動運行一個“宏1”如何把這個宏做出來啊。求各位幫幫忙吧
uj5u.com熱心網友回復:
樓主參考一下。 沒有弄你的那些單元格,究竟如何判斷是否要呼叫“宏1”。如果沒有規律、并且確實是事先填充好顏色的,
那么你可以改為以Target.Interior.Color的值是否為XXXX值來判斷。

話說,樓主用的“二筆輸入法”,這個確實不太常見。
我以前也看過它的教程,但是它的編碼和字根布局,我很不習慣,老是跟五筆搞混…………最后放棄它了。
樓主用起來習慣么?
uj5u.com熱心網友回復:
樓上你還真的細心啊啊。謝謝你的解答,但是我還有個問題,就是這些有顏色的單元格在表中的位置是不固定的啊,只有他們的名稱是固定的啊,只有在他們有資料變化的時候才運行宏1,并不是有顏色變化才運行宏1.非常希望你在幫幫我。非常感謝你uj5u.com熱心網友回復:
那個事件是“內容變化”時觸發的,不是顏色變化觸發。
你說的“名稱”,是對單元格的地址命名嗎?
如果是,那也可以通過上面的代碼取得行號、列號,然后從thisworkbook.Names中列舉RefersToR1C1 屬性,
看有沒有“行號、列號相符”的啊,如果有就呼叫宏1、然后退出回圈唄。
uj5u.com熱心網友回復:
恩,可能是我剛學,不太理解你的意思吧。比如說“直徑”這一列吧。當他下面有資料變化的時候就執行宏1。但是“直徑”呢不一定在表的那個位置上。這個應該怎么寫呢。謝謝你uj5u.com熱心網友回復:
原來你說的“名稱”,僅僅是表格內單元格內的文本內容啊,我還以為你真的玩到了“單元格命名”呢(雖然這并不是什么高深的東西
)。比如你主貼圖片中第33行:A33到F33這幾個單元格,就有這些“名稱”。
有可能是前面插入了一些資料,本來是在33行的,后來變成45行去了,是吧?
開始在33行的時候,A36變化時,需要“執行宏1”;
但后來變到45了之后,A36變化時,就不能再去執行宏1了。
你是這個意思吧?
其實這也不難。“行”位置不固定,至少列位置應該是固定的吧!
那么,正如我在1樓圖片中的代碼那樣:
先取“發生變化”的單元格行號、列號,
以這個值“粗略判斷”一下,“明顯在范圍之外”的,直接不管了,退出。
比如列值為7(因為1到5列才是“要管的”)之類的、或者行號值很小等。
接著,就是“可能要管”的了:
如果列號值為1,同時行號是35,索到“直徑”是在33行,因為行35〉33,于是執行宏1。
又假設另一次 A35單元格變化,觸發事件了:
但現在檢索到“直徑”是在第45行,現在35〈45了,于是直接“退出”。
其它“長度”、“寬度”等等,都可以類推。
就算“直徑”變化時執行宏1、“長度”變化時執行宏2、“寬度”變化時執行宏3,等等……都可以。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/72158.html
標籤:VBA
