Board logo

標題: 『已解決』DDE&Calculate事件的應用 [打印本頁]

作者: ko310kmo    時間: 2011-4-27 22:22     標題: 『已解決』DDE&Calculate事件的應用

本帖最後由 ko310kmo 於 2011-10-7 17:59 編輯

一開始已有sheet1、8600、8700、8800、8900、9000等六個工作表
sheet1的  B2到B3是一排工作表名稱(8600~9000),
C2到C6是它們分別是其所屬的DDE公式(我使用e-leader的DDE公式讓它們接收值)
每當C2~C6接到DDE傳來的值,就會把新的值copy貼到其所屬的工作表的D欄儲存格
(ex:C3儲存格從100變成200,那就把200貼到 8700工作表的D欄)

這是有辦法做的嗎?
用迴圈下去跑嗎?
作者: GBKEE    時間: 2011-4-28 17:08

本帖最後由 GBKEE 於 2011-4-28 17:09 編輯

回復 1# ko310kmo
8600、8700、8800、8900、9000等工作表  是B2到B6
試試看
  1. Private Sub Worksheet_Calculate()
  2. Dim e As Range
  3. For Each e In Range("B2:B6")
  4. Sheets(e.Text).Range("D1") = e.Offset(, 1)
  5. Next
  6. Set e = Nothing
  7. End Sub
複製代碼

作者: ko310kmo    時間: 2011-4-28 23:35

本帖最後由 ko310kmo 於 2011-5-1 11:30 編輯

回復 2# GBKEE

謝謝GBKEE大大,是可以成功的
但還有一個問題是
Sheets(e.Text).Range("D1") = e.Offset(, 1)

sheet1的c2到c6是持續不停變動的,所以公式中的D1要該成變數
否則會一直在D1蓋過寫入,無法往下紀錄

我本來想說用
Private Sub Worksheet_Calculate()
    Dim E As Range
    Dim P As Integer
        For Each E In Range("B2:B13)
            P = Sheets(E.Text).Range("D65536").End(xlUp).Row + 1
           Sheets(E.Text).Range("D" & P) = E.Offset(0, 1)
        Next
    Set E = Nothing
End Sub


但這樣它的p值卻無法每個工作表分開計算,請問該怎麼辦?
謝謝大大的開示!!!


附上檔案,讓大大更了解我的想法,附上的檔案有再做少需的修改、欄位的變動
作者: GBKEE    時間: 2011-4-29 16:37

回復 3# ko310kmo
M = Worksheets("sheet1").Range("B65536").End(xlUp).Row   
        For Each E In Range("B2:B" & M)
            P = Sheets(E.Text).Range("J65536").End(xlUp).Row + 1
            Sheets(E.Text).Range("J" & P) = E.Offset(0, 1)
        Next

如此是可以在Sheets(E.Text)的J欄中,往下記錄資料沒錯阿.
但這樣它的p值卻無法每個工作表分開計算 不了解!!, 可再解釋嗎?
作者: ko310kmo    時間: 2011-4-29 23:47

回復 4# GBKEE

大大
昨天我本來以為沒辦法,但今日開盤測試後才發現是可以的,謝謝你!!!
十分感謝你,解決了我二個多禮拜的困擾!!!!

最後想請教Sheets(e.Text),為什麼要加text?
有加跟沒加的差別在哪?
學校的參考書上沒寫,所以一直不知道這種用法,謝謝:)
作者: Hsieh    時間: 2011-4-29 23:58

若是以E.Value那麼會因為你的內容是數值,而造成是指定第幾個工作表
如Sheets(8900),這是指第8900個工作表,而非工作表明稱為8900的工作表
E.Text得到的答案才是字串型態
就會成了Sheets("8900")
這就是因為資料型態不同,而產生不同的結果
作者: GBKEE    時間: 2011-4-30 16:56

回復 5# ko310kmo
Hsieh版主 解釋 e.Text 為字串才可正確指定所要的工作表
Sheets(e.Text) ->  Sheets( e & "")  一樣可將e的值(數字型態) 轉為字串型態
作者: ko310kmo    時間: 2011-5-1 11:23

謝謝大大們的開示,讓我又上了一課




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)