返回列表 上一主題 發帖

excel VBA calculate 的疑問

本帖最後由 Hsieh 於 2013-5-12 15:51 編輯

回復 18# shy
TOUCHANCE說明
  1. tmpResult = PlaceOrderVB(OrderInfo)
  2. tmpResult:請宣告為String,接收函式回傳值。
  3. OrderInfo:請宣告為String,內容為下單字串。
  4. tmpResult數說明:
  5. 變數
  6. 說明
  7. tmpResult
  8. 您可以改變變數名稱,當下單失敗時會回傳一組字串存入
複製代碼
所以,不需考慮你DDE程序
你要以D4 作為下單依據
  1. Private Declare Function PlaceOrderVB Lib "TC_Excel_Addin.xll" (ByVal OrderInfo As String) As String
  2. Option Explicit

  3. Private Sub Worksheet_calculate()

  4. Dim tmpResult As String
  5. Dim OrderInfo_1 As String  '下單的參數

  6. OrderInfo_1 = "" '裡面有個資,所以沒有辦法公開
  7. '這應該是你下單的參數

  8. If Range("D4") >= 0 Then
  9. Application.EnableEvents = False
  10. tmpResult = PlaceOrderVB(OrderInfo_1) '執行你所謂的下單動作
  11. MsgBox "Run PlaceOrderVB OK!:" & tmpResult  '如果有執行就會出現此警示視窗
  12. Application.EnableEvents = True
  13. End If
  14. End Sub
複製代碼
學海無涯_不恥下問

TOP

回復 20# shy
以上程式碼以邏輯來看,開啟檔案會執行重算沒錯,會觸發Worksheet_Calculate程序
在程序內判斷D4是否符合條件而判斷是否執行送單動作
接下來當DDE收到更新後都會觸發Worksheet_Calculate
但是,若D4結果不符合條件也不該有送單動作
而且每次送單後都應該會出現對話方塊才對
實在看不出哪個環節出錯?
學海無涯_不恥下問

TOP

        靜思自在 : 看別人不順眼,是自己修養不夠。
返回列表 上一主題