2014-11-01 220 views
1

我試圖做我認爲簡單的事情變得更加困難。基本上我想要做的是根據它旁邊單元格的選擇變化來填充材質列。材質欄是一個下拉菜單,它從LookUpRange中獲取它的值。Excel VBA範圍返回空

這是第1部分

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) 
Dim MaterialCellAddress As String 
Dim MaterialCell As Range 
Dim LookUpRangeName As String 
Dim LookUpRange As Range 

Select Case Target.Column 
    Case 2 
     ThisRow = Target.Row 
     MsgBox ("Changing the width") 
    Case 3 
     MsgBox ("Changing the Height") 
    Case 11 

     MaterialCellAddress = "L" & Target.Row 
     Set MaterialCell = Range(MaterialCellAddress) 

     LookUpRangeName = "LookUpRange_" & Target.Value & "Materials" 
     Set LookUpRange = Range(LookUpRangeName) 

     Call LM.InitMaterialDropDownList(MaterialCell, LookUpRange) 
    Case Else 
     MsgBox ("Something else is going on") 
End Select 
End Sub 

這裏是我的LM類

Public Sub InitMaterialDropDownList(ByVal MaterialCell As Range, ByVal LookUpRange As Range) 
With Sheets("Entry Form").Range(MaterialCell).Validation 
.Delete 
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="=LookUpRange" 
.IgnoreBlank = True 
.InCellDropdown = True 
.InputTitle = "Select Edge Type" 
.ErrorTitle = "Invalid Edge Type" 
.InputMessage = "Select Edge Type" 
.ErrorMessage = "You must select a valid edge type from the drop down list" 
.ShowInput = True 
.ShowError = True 
End With 
End Sub 

,我注意到有兩件事情裏面第二部分。當代碼點擊Set MaterialCell = Range(MaterialCellAddress)或這Set LookUpRange = Range(LookUpRangeName)這兩個都由於某種原因返回空。

當然,當我打這個... Call LM.InitMaterialDropDownList(MaterialCell, LookUpRange) 它會拋出一個對象所需的錯誤。

我不是一個vba老將,所以我敢肯定這簡直是愚蠢的事情。所以我可以使用一些幫助。

+0

的代碼看起來不錯。試着在'MaterialCellAddress =「L」&Target.Row'後面加上一個'MsgBox MaterialCellAddress',看看結果如何。因此,請驗證組合「字母+數字」是範圍的正確地址。用另一個返回空的範圍的名稱做同樣的事情:乍一看,你的代碼似乎不應該工作。 – 2014-11-01 01:25:55

回答

0

LM是一個類,類沒有子類或函數,類的實例具有您定義的函數/子類。所以

Call LM.InitMaterialDropDownList(MaterialCell, LookUpRange) 

應該

Call (new LM).InitMaterialDropDownList(MaterialCell, LookUpRange) 

或更短(呼叫時並不需要)

(new LM).InitMaterialDropDownList MaterialCell, LookUpRange 
+0

我知道我錯過了一些簡單的事情。謝謝您的幫助。 – joeb 2014-11-01 03:41:29