返回列表 上一主題 發帖

[發問] 有關使用事件程序取得資料(有二個問題)

[發問] 有關使用事件程序取得資料(有二個問題)

本帖最後由 icestormer 於 2014-1-14 12:33 編輯









上圖是利用A2的物品名稱 去找到資料區內的賣價但現在是買價的公式寫不出來~~

下圖是各種物品資料 由於紅圈處資料筆數不同 所以不知應要怎寫公式讓EXCEL能取得 買價的價位(已附上檔案)
如果我有說明不清的地方,請見諒∼∼ 




Book2.rar (13.75 KB)

回復 14# stillfish00


   好 感謝 我去試試

TOP

回復 13# icestormer
1. FOR迴圈結束就全部完成阿..
2. 沒遇到,迴圈內加個DOEVENTS看看

TOP

本帖最後由 icestormer 於 2014-1-24 14:19 編輯
回復  icestormer
改上面
  With Sheets("主工作表")
    ar = Application.Transpose(.Range(.Range(" ...
stillfish00 發表於 2014-1-16 10:18


你好 由於發現另一個問題但不知怎寫 又來請教你了
我想使用下面程式碼 讓它自動重算(我把它改成手動的)
'
    Application.MaxChange = 0.001
    ActiveWorkbook.PrecisionAsDisplayed = False
    Calculate
由於資料在更新時會有2 300筆 不知應怎樣寫 讓程式判定 已停止更新(全部已更新完成) 再執行上述程式碼呢? 麻煩你了

另外不知為什麼只要更新超過十多筆就會出再現如下圖的情況,要等到更新完成才會回復正常 ,但這正常嗎??

TOP

回復  stillfish00


   感謝!
icestormer 發表於 2014-1-16 10:29



  已完全沒有問題..我再多試 感謝的幫忙^^

TOP

回復 10# stillfish00


   感謝!

TOP

本帖最後由 stillfish00 於 2014-1-16 10:20 編輯

回復 9# icestormer
改上面
  With Sheets("主工作表")
    ar = Application.Transpose(.Range(.Range("A2"), .Cells(.Rows.Count, "A").End(xlUp)).Value)
    If Not IsArray(ar) Then ar = Array(ar)
  End With


去掉 updateprice   要跑時有錯誤
不懂,不可能取消呼叫函數反而產生錯誤

TOP

本帖最後由 icestormer 於 2014-1-16 09:53 編輯

回復 8# icestormer


   

你好 我一開始 試都OK(有3筆) 然後呢 我發現當只有一筆資料時(如上圖)就會發生錯誤  只要有2筆以上資料就不會出錯 不知要修改那裡呢?


另外 我把那一行去掉 updateprice   要跑時有錯誤

TOP

回復 7# stillfish00


   對 沒錯 不然我只要看300筆但一次全部更新3千筆...這..太沒花時間也沒必要  感謝 我試試!^^

TOP

回復 6# icestormer
所以你資料表是有很多很多外部資料連線組成,全部都更新太慢所以是要找到特定的外部資料更新連線就好,
然後再取回買賣價到主工作表,對嗎?

修改主工作表
  1. Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  2.   If Application.Intersect(Target, Range("F1:G1")) Is Nothing Then Exit Sub
  3.   UpdateQueryTable
  4.   UpdatePrice
  5. End Sub
複製代碼
原本一般模組再加上:
  1. Sub UpdateQueryTable()
  2.   Dim ar, rng As Range, x
  3.   Dim sMsg As String, bNotFound As Boolean
  4.   
  5.   Const sMark = " - Market Browser"
  6.   sMsg = "以下找不到 : "
  7.   
  8.   With Sheets("主工作表")
  9.     ar = Application.Transpose(.Range(.Range("A2"), .Cells(.Rows.Count, "A").End(xlUp)).Value)
  10.   End With
  11.   
  12.   With Sheets("資料區")
  13.     For Each x In ar
  14.       Set rng = .Cells.Find(x & sMark, LookIn:=xlValues, lookat:=xlWhole)
  15.       If rng Is Nothing Then
  16.         sMsg = sMsg & vbCrLf & x & sMark
  17.         bNotFound = True
  18.       Else
  19.         rng.QueryTable.Refresh BackgroundQuery:=False
  20.       End If
  21.     Next
  22.   End With
  23.   
  24.   If bNotFound Then MsgBox sMsg Else MsgBox "Finish"
  25. End Sub
複製代碼

TOP

        靜思自在 : 滴水成河。粒米成蘿,勿輕己靈,勿以善小而不為。
返回列表 上一主題