2016-08-17 52 views
1

我有一個奇怪的對象/用戶定義的1004錯誤的位..也許我只是忽略了一些東西。VBA 1004錯誤從其他工作表拉動數據

我期待實現非常相似的一個,我在另一片使用的代碼。本質上,該工作表是儀表板,用戶使用的唯一單元格是活動頁面中的「b1」,因爲這允許用戶從下拉菜單中進行選擇。在更改信息時,應參考ClientDB表找到正確的行,然後從中獲取信息。

伊夫使用非常相似的代碼之前沒有順利..只是想知道,如果有什麼我可以俯瞰?

這裏是我的代碼:

Private Sub Worksheet_Change(ByVal Target As Range) 

Dim DBWS As Worksheet, cws As Worksheet, sws As Worksheet 
Dim aa As Integer, bb As Integer, cc As Integer, dd As Integer 

Set DBWS = ActiveWorkbook.Sheets("ClientDB") 
Set cws = ActiveWorkbook.Sheets("ClientBoard") 

aa = DBWS.Columns("a").Find(what:=cws.Range("b1").Value, after:=DBWS.Range("a1")).Row 
bb = Range("a" & aa).Row 


'contact 
Range("b3").Value = DBWS.Cells(bb, "H").Value 
'number 
Range("b4").Value = DBWS.Cells(bb, "I").Value 
'email 

Range("b5").Value = DBWS.Cells(bb, "J").Value 

「等。等等。等等。

額外注:如果我運行一個錯誤處理程序來繞過錯誤1004後就會最終填充少數的ErrorHandler週期

任何幫助將不勝感激!

謝謝!

周杰倫

+0

我會建議修改爲'灰暗龍BB作爲Long'只是可以肯定的,不一定要解決這個問題 –

+0

我得到的錯誤行:AA = DBWS.Columns( 「A」),查找(什麼:= cws.Range( 「B1」)值後:= DBWS.Range( 「A1」))。行 – JayF

回答

0

你沒有資格的上下文

bb = Range("a" & aa).Row 

Excel不知道這個範圍是指表。其他不合格的Range語句也是如此。

+0

今天也許我累了,但是使用'bb = Range(「a」&aa).Row'是什麼意思?如果'aa = DBWS.Columns(「a」)。Find(what:= cws.Range(「b1」)。Value,after = = DBWS.Range(「a1」))。Row'返回一個行號,那麼他將它放在一個範圍內以獲得行號,在這種情況下不是'bb = aa'?對我而言 –

+0

很有可能草率的編碼.. 有了您的建議更改Teylyn我有以下幾點:「自動化錯誤 - 調用已經與其客戶端斷開連接的對象」 – JayF

1

考慮DBWS.Columns("a")...變化DBWS.Columns("a:a")...

a不是一個有效的參考。

+1

或'列(1)' –

1

正如@SickDimesion提到的,你必須改變Columns("a")DBWS.Columns("a:a")DBWS.Columns(1)

這樣做變更後,您可能仍然得到一個錯誤,因爲,你是直接試圖讓行。如果.Find未返回匹配,該怎麼辦?

考慮更改代碼,這

Dim aCell as Range 

set aCell = DBWS.Columns(1).Find(what:=cws.Range("b1").Value, _ 
           after:=DBWS.Range("a1")) 

If Not aCell Is Nothing Then 
    aa = aCell.Row 
Else 
    Msgbox "Value Not Found" 
    Exit Sub 
End If