VBA マクロを使用して、ワークシートに保存されているリストからセル データの検証を設定しようとしています。リストの長さがわからないので、範囲を動的に選択する必要があります。
現時点では、行 .Add Type:= 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
次の 2 つの質問が既に尋ねられているのを見てきましたが、提案を機能させることができませんでした。
変数を使用すると、Excel で VBA を介した検証の設定が失敗する
ワークシートが MS-Excel で保護されている場合、実行時エラーを回避するにはどうすればよいですか?
どんな助けにも感謝します。