나는 단순하다고 생각되는 것을하려고하는 것이 더 어려워지고 있습니다. 기본적으로 내가하려고하는 것은 옆에있는 셀의 선택 변경을 기반으로하는 재료 기둥을 채우는 것입니다. Material 열은 LookUpRange에서 값을 가져 오는 드롭 다운 메뉴입니다.Excel VBA Range 빈 값을 반환합니다.
여기에 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
내가 납니까 몇 가지 내부 파트 II입니다. 코드가 Set MaterialCell = Range(MaterialCellAddress)
또는이 Set LookUpRange = Range(LookUpRangeName)
에 도달하면 둘 다 어떤 이유로 빈 값을 반환합니다.
그리고 물론 이걸 명중하면 ... Call LM.InitMaterialDropDownList(MaterialCell, LookUpRange)
개체 오류가 발생합니다.
저는 VBA 베테랑이 아니므로이게 어리석은 일이라고 확신합니다. 그래서 나는 약간의 도움을 사용할 수 있습니다.
이하이어야한다. 'MaterialCellAddress = "L"& Target.Row' 바로 뒤에'MsgBox MaterialCellAddress'를 놓고 무엇이 나오는지보십시오. 따라서 "문자 + 숫자"조합이 해당 범위의 올바른 주소인지 확인하십시오. 공백을 반환하는 다른 범위의 이름과 동일하게하십시오. 언뜻보기에 코드가 작동해서는 안되는 이유가없는 것 같습니다. –