3
我想從使用VBA宏存儲在我的工作表中的列表中設置單元格數據驗證。我不知道列表會有多長時間,所以需要動態選擇範圍。將細胞數據驗證設置爲動態範圍列表
此刻行.Add類型:= Formula1:=「= perfGradeRange」正在引發運行時錯誤'1004'應用程序定義或對象定義的錯誤。
我的代碼是這樣的:
Sub Perf_Grade_Dropdown()
Dim perfGradeData As Worksheet
Dim usedRange As range
Dim rLastCell As range
Dim range As range
Dim perfGradeRange As range
Set perfGradeData = Worksheets("Values")
perfGradeData.Unprotect Password:="pass"
perfGradeData.Activate
Set rLastCell = perfGradeData.Cells.Find(What:="*", After:=Cells(1, 1), LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:=False)
Set perfGradeRange = perfGradeData.range(Cells(1, 1), rLastCell)
Set range = perfGradeData.range(Cells(3, 3), Cells(4, 3))
With range.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=perfGradeRange"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
perfGradeData.Protect Password:="pass", DrawingObjects:=True, contents:=True, Scenarios:=True, userinterfaceonly:=True, _
AllowSorting:=True, AllowFiltering:=True, AllowDeletingColumns:=True, AllowInsertingColumns:=True
perfGradeData.EnableAutoFilter = True
End Sub
我見過已經提出以下兩個問題,但一直沒能得到任何的建議的工作:
Setting validation via VBA in excel fails when using variable
How do I avoid run-time error when a worksheet is protected in MS-Excel?
感謝任何幫助。
這幾乎可以工作,但這意味着我的下拉列表只包含第一個單元格中的值,我如何將其更改爲包含範圍內所有單元格的值? – db579
你的意思是這樣的:Formula1:= range(「perfGradeRange」)。Address?這再次給我1004運行時錯誤 – db579
@ db579使用Formula1:=「=」&perfGradeRange.Address – Santosh