返回列表 上一主題 發帖

[發問] Calculate,能否回傳發生變動的儲存格的欄位

[發問] Calculate,能否回傳發生變動的儲存格的欄位

本帖最後由 ketrddem 於 2016-5-1 19:10 編輯

Worksheet_Calculate事件中
假設我指定的範圍為sheet1.Columns("A:S").Calculate(第一張表)
大約有300列

如果某個公式運算符合條件,就會變成「YES」,沒有符合條件,就是空白「" "」

請問,有沒有什麼方法能夠讓我在第一時間知道是那一個欄位產生變動呢

比方,儲存格「D5」,符合條件了,從空白值變成「YES」

程式就會回傳到sheet2,比方回傳值為「D5發生YES事件」(把發生的欄位回傳到第二張表)
EXCEL VBA新手,請前輩多多指教

不好意思,可能小弟說明不清

D5只是個比方而已
其實發生變動 是在A2:S300的任何一個儲存格都可能發生

所以上面c_c_lai大大提供的範例,都是有指定欄位的變動

小弟想做的是,在A2:S300的範圍��
不管那一個儲存格發生變動
都能獲得「發生變動的那個儲存格位址」
EXCEL VBA新手,請前輩多多指教

TOP

做個小小的說明,因為權限有限,不能貼附件:

A到S欄中,當中D欄公式設為「成交價>五日均線,AND 五日均量>十日均量,AND KD>30」
第一列到第300列當中,假設第150列為股號1101,當D150儲存格符合條件,就顯示YES。

問題來了,我想知道,現在D150正發生了變動

如果無法獲知變動的是D150這個儲存格

我就無法知道,股號1101,目前符合了我的挑股的條件,也就是「成交價>五日均線,AND 五日均量>十日均量,AND KD>30」的條件

於是乎

小弟想用CALCULATE方法,去做整張工作表設計

然後,發生變動的欄位,能得到該欄位的列號跟欄名,這樣子才能用OFFSET定位出是那一檔股票,以及在什麼條件下符合了。

再次感謝各位先進指導,再請不吝指教。謝謝。
EXCEL VBA新手,請前輩多多指教

TOP

因為整張表都是公式,change事件應該是不會被觸動的
所以才直接想到用calculate
EXCEL VBA新手,請前輩多多指教

TOP

回復 13# c_c_lai


    元大RTD,沒有使用DDE。

DDE太不方便了,還是RTD比較好用
EXCEL VBA新手,請前輩多多指教

TOP

小弟不才,只有想法,整個EXCEL還沒真的寫完整。
所以提供圖例,希望各位能提供些想法供小弟參考。

123.jpg (206.94 KB)

圖例

123.jpg

EXCEL VBA新手,請前輩多多指教

TOP

回復 16# c_c_lai


我有想過,陣列比對。

每十秒或二十秒比對一次。

假設
10:00分0秒,儲存內容為陣列1
10:00分10秒,儲存內容為陣列2

陣列1與陣列2比對,找出差異欄位,定位出股號及條件原因
然後把資訊寫進別的儲存格
寫進後,陣列1刪除,陣列2變更為陣列1,等著下個十秒再做陣列2的比對
但有想法卻不知是否真正可行,寫了不知對系統會不會造成很大負擔。
更重要的是,小弟對陣列不太熟。就算陣列寫出來,也不知如何做比對定位。
EXCEL VBA新手,請前輩多多指教

TOP

回復 19# 准提部林

准提大大,承蒙你關照,沒想到果然把您釣出來了。以前在奇摩知識就發過許多問題,也蒙你指導許多。

這個例子,並不是要取儲存格中的文字「YES」

而是要取「YES」這個值它的列號及欄名,以便得知是那一支股票(列號)符合了選股條件,以及發生在那一種條件下(欄名)的選股條件。

圖例更改剛剛小弟發的圖,發錯圖了,這張後面還有說明,比較完整。

cats.jpg (262.69 KB)

cats.jpg

EXCEL VBA新手,請前輩多多指教

TOP

目前的想法,下一分鐘,條件不成立,K2不填入任何資料
如果是一下成立一下不成立
就在值填入K2之前,先掃一遍K欄,看有沒有同時符合1216條件一。如果有,就跳過不填入

換言之,同一個條件只會產生一次訊號,而且只提供多訊或空訊,帶進不帶出。

這都是次要問題,主要是如何取得發生變動的欄位的位址。位址抓不到,後續的動作都無法進行了。
EXCEL VBA新手,請前輩多多指教

TOP

小弟想出解法了,供各位參考指教:

可能繞了一大圈,但真沒辦法的狀況下,也許這個土法鍊鋼的方法反而比較簡單

SHEET1,為CALCULATE的工作表重算事件
SHEET2,用VBA,每十秒將SHEET1整張表複製值到SHEET2上
SHEET3,比對SHEET2與SHEET1的欄位,因為SHEET3不是用到CALCULATE方法,所以差異欄位就很容易找了。
EXCEL VBA新手,請前輩多多指教

TOP

        靜思自在 : 自己害自己,莫過於亂發脾氣。
返回列表 上一主題