返回列表 上一主題 發帖

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

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

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

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

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

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

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

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

回復 27# c_c_lai


    太感謝了,完全就是我想實現的狀況
    仔細看了語法,其實是之前自已想得太複雜了
     其實就單純找「yes」就好了呀。

    換言之,其實不需要做到二層迴圈,用if一欄一欄的找就好了。
    感謝不吝指教。
EXCEL VBA新手,請前輩多多指教

TOP

回復 24# ketrddem

TOP

給個參考方案:
TEST001.rar (25.62 KB)
http://www.funp.net/921173

此帖我發意見至此為止囉!!!

TOP

小弟又想出解法了
二層迴圈
FOR I TO LOSTROW
       FOR J TO LOSTCOLUMN
              IF CELLS(I,J).VALUE = "YES"
                    MSGBOX  "股號" & CELLS(I,1).VALUE & "符合條件" & CELLS(1,J).VALUE
              END IF
      NEXT
NEXT

以上,晚上再實際寫寫看,運作看看
EXCEL VBA新手,請前輩多多指教

TOP

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

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

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

TOP

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

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

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

TOP

回復 20# ketrddem


K2:1216統一.符合條件1.建議買進
下一分鐘.條件不成立,K2如何顯示?

最好附上簡單範例檔案,否則一來一往切也不到點,太浪費大家時間!
若要動態顯示,也許只用公式即可解決!

TOP

回復 19# 准提部林

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

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

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

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

cats.jpg (262.69 KB)

cats.jpg

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

TOP

回復 17# ketrddem

以這樣的表格, 同時成立條件的可能不只一個, 而且自動重算無法判定是哪個(些)儲存格,
建議公式改為:
=IF(條件成立,"YES",0)

當發生事件觸動,
Set Rng = [H:H].SpecialCells(xlCellTypeFormulas, 2)  '抓取公式中的[文字值]儲存格
再用
For Each xR in Rng
    逐一記錄
next

TOP

        靜思自在 : 改變自己是自救,影響別人是救人。
返回列表 上一主題