返回列表 上一主題 發帖

[發問] 請問關於跨工作表vlookup的vba語法

[發問] 請問關於跨工作表vlookup的vba語法

  1. Private Sub WORKSHEET_CHANGE()
  2. Dim data As Range
  3. Set data = ['sheet2'!$A$1:$B$10]
  4. [b1] = Application.WorksheetFunction.VLookup([a1], data, 2, 0)
  5. End Sub
複製代碼
以上是我爬論壇的文所寫出來的 想要在sheet1的a1:a10打上編號 則b1:b10參造a1:a10的編碼找尋sheet2的資料
但 卻出現了"無法取得類別 worksheetfanction的vlookup屬性"這訊息

煩請各位大大指教一下 該怎麼修正完善 非常感恩!

本帖最後由 GBKEE 於 2013-9-16 15:34 編輯

回復 1# e19821223
  參考這裡 stillfish00 的研究  
  1. Private Sub WORKSHEET_CHANGE()
複製代碼
這程序名稱,是VBA工作表物件模組的內建事件名稱,不要亂用
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

需要花時間研究 還是不是很懂 感謝G大的指教~

TOP

第一行保持事件的完整參數
Private Sub WORKSHEET_CHANGE(ByVal Target As Range)
就可以執行了

TOP

感謝O大的回覆 我依照O大所打的 改成
Private Sub WORKSHEET_CHANGE(ByVal Target As Range)
Dim data As Range
Set data = ['sheet2'!$A$1B$10]
[b1] = Application.WorksheetFunction.VLookup([a1], data, 2, 0)
End Sub

可行了
可運作了
但出現了警告標語"堆疊空間不足" 不知道是什麼問題呢
還有 我今天 是用A1 B1
但 我若是想要在A1:A10 ,B1:B10都想要呈現 那 要打10次嗎?
我是非常新的新手..尚在學習 先感謝各位路過的高手的指教

TOP

  1. Private Sub WORKSHEET_CHANGE(ByVal Target As Range)
  2. Dim data As Range
  3. Set data = ['sheet2'!$A$1B$1000]
  4. [b1] = Application.WorksheetFunction.VLookup([a1], data, 2, 0)
  5. End Sub
複製代碼
以上的不能使用...當輸入後電腦變的超級慢 excel整個當掉
不知是否有更好的方式呢 謝謝指教

TOP

回復 6# e19821223
VBA 說明
  1. EnableEvents 屬性
  2. 請參閱套用至範例特定如果指定物件能觸發事件,則本屬性為 True。讀/寫 Boolean。
複製代碼

WORKSHEET_CHANGE 當使用者或外部連結變更工作表中的儲存格時發生此事件
[b1] = Application.VLookup([a1], data, 2, 0) ,會一直引發此事件.
   
  1. Option Explicit
  2. Private Sub WORKSHEET_CHANGE(ByVal Target As Range)
  3.     Dim data As Range
  4.     Application.EnableEvents = False
  5.     Set data = ['sheet2'!$A$1:B$1000]
  6.     [b1] = Application.VLookup([a1], data, 2, 0)
  7.     Application.EnableEvents = True
  8. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

感謝O大的指教!
終於止住不運轉了!

不過 當執行此語法後 在B1的部分 就不能手動輸入了
有什麼辦法是可以說依然可以手動輸入呢?
再次麻煩了 非常感謝

TOP

回復 8# e19821223
  1. If Target.Address(0, 0) = "B1" Then Exit Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 9# GBKEE
再次謝謝G大
不過 當在A輸入值時 B會出現"#N/A" 的情況(因為找不到值)
小弟我很單純的多加一個IF 語法如下:
  1. If [c13:c32] = "#N/A" Then
  2. [c13:c32] = ""
  3.      
  4. End If
複製代碼
恩..我不是很懂的看了我自己寫的也笑了...好像沒那麼單純..
根本無法執行...

再次請教G大了

TOP

        靜思自在 : 人要自愛,才能愛普天下的人。
返回列表 上一主題