返回列表 上一主題 發帖

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

本帖最後由 icestormer 於 2014-1-15 18:21 編輯

回復 5# stillfish00


   

那個好像你誤會我的意思了

我再試者說明一次 主要是資料會有2 到3千筆 但是每次我也許只要更新其中1到3百筆(每種每次更新時種類不同)

我按下 更新價位時 他好像只會更新 主工作表上的B2到C4(目前上頭只有3筆資料)而不會去更新 資料區內的 如下圖

我想一個程式在我按下[更新市價]時 它會自動按[主工作表]上A2到AXXX(看有幾筆)
每一筆上的物品名稱(例如:Pyerite)去找到資料區內進而更新它 ,然後由於資料量大所以他可能會A那或是H或是更遠的AC300那裡
如果全部資料都在同一行(A1:A65536)那我還寫的出來但資料會分散開所以寫不出來><
再次感謝你的回覆!

TOP

回復 4# icestormer
按上方[更新價位]字樣(F1 G1儲存格)

TOP

回復 3# icestormer


    你好 程序會很順利的跑完但他不會更新呢,SORRY我沒有說明白 我是用下方指令這種來更新

  Selection.QueryTable.Refresh BackgroundQuery:=False

TOP

回復 2# stillfish00


  感恩 我去試試!

TOP

回復 1# icestormer
VBAProject
主工作表
  1. Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  2.   If Application.Intersect(Target, Range("F1:G1")) Is Nothing Then Exit Sub
  3.   UpdatePrice
  4. End Sub
複製代碼
一般模組
  1. Sub UpdatePrice()
  2.   Dim d, rng As Range
  3.   Dim sName As String, sSell As String, sBuy As String
  4.   Dim r As Long, c As Long, x
  5.   
  6.   Const sMark = " - Market Browser"
  7.   Const sMarkSell = "Sell Orders (Buy Orders)"
  8.   Const sMarkBuy = "Buy Orders"
  9.   
  10.   Set d = CreateObject("scripting.dictionary")
  11.   
  12.   With Sheets("資料區")
  13.     For c = 1 To .UsedRange.Columns.Count Step 7  '6欄加上空白欄 = 7
  14.       For r = 1 To .Cells(.Rows.Count, c).End(xlUp).Row Step 300 '固定300列
  15.         sName = "": sSell = "": sBuy = ""
  16.         With .Cells(r, c).Resize(300)
  17.           Set rngName = .Find(sMark, LookIn:=xlValues, lookat:=xlPart)
  18.           If rngName Is Nothing Then GoTo NEXT_BLOCK Else sName = Left(rngName.Value, Len(rngName.Value) - Len(sMark))
  19.          
  20.           Set rng = .Find(sMarkSell, LookIn:=xlValues, lookat:=xlWhole)
  21.           If Not rng Is Nothing Then sSell = rng.Offset(3, 2).Value
  22.          
  23.           Set rng = .Find(sMarkBuy, LookIn:=xlValues, lookat:=xlWhole)
  24.           If Not rng Is Nothing Then sBuy = rng.Offset(3, 2).Value
  25.          
  26.           d(sName) = Array(sSell, sBuy)
  27.         End With
  28. NEXT_BLOCK:
  29.       Next
  30.     Next
  31.   End With
  32.   
  33.   '貼上價位
  34.   With Sheets("主工作表")
  35.     For Each x In .Range(.Range("A2"), .Cells(.Rows.Count, "A").End(xlUp))
  36.       If d.exists(x.Value) Then x.Offset(, 1).Resize(, 2).Value = d(x.Value)
  37.     Next
  38.   End With

  39. End Sub
複製代碼

TOP

        靜思自在 : 虛空有盡.我願無窮,發願容易行願難。
返回列表 上一主題