2015-03-02 184 views
0

我想創建一個VBA代碼,它將創建一個下拉列表或在單元格中具有Vlookup函數。 我是VBA的新手,請保持仁慈。 :) 問題是,下面的代碼總是崩潰的Excel。Excel VBA下拉列表和vlookup問題

Private Sub Worksheet_Change(ByVal Target As Range) 

Dim Lookup_Range As Range 

Set shList = ThisWorkbook.Sheets("ListaEchipamente") 
Set Lookup_Range = shList.Range("G10", "M345") 

If Cells(Target.Row, 13).Value = " " Then 

With Range("J2:J100").Validation 
.Delete 
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _ 
Operator:=xlBetween, Formula1:="=ListaEchipamente!K10:K345" 
.IgnoreBlank = True 
.InCellDropdown = True 
.InputTitle = "" 
.ErrorTitle = "" 
.InputMessage = "" 
.ErrorMessage = "" 
.ShowInput = True 
.ShowError = True 
End With 

ElseIf Not Cells(Target.Row, 13).Value = " " Then 

Cells(Target.Row, 10).Value = "=VLookup(Range(target.row, 13), Lookup_Range, 2, False)" 

End If 

End Sub 

謝謝你的幫助。

+0

您是否指定了目標範圍?現在,任何時候工作表發生變化,代碼都會激活Possible,如果你的目標列是A,那麼你可以開始你的代碼,如'如果target.count> 1,然後退出sub''如果target.column < > 1然後退出子''你的代碼' – Davesexcel 2015-03-02 09:35:30

回答

1

您的代碼更改Cells(Target.Row, 10).Value觸發另一個更改事件,並且您得到無限循環。要避免它首先禁用事件:

Application.EnableEvents = False 

'code to modify cells here 

Application.EnableEvents = True 
+0

解決。謝謝 – szopax 2015-03-02 12:57:44