3

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 で保護されている場合、実行時エラーを回避するにはどうすればよいですか?

どんな助けにも感謝します。

4

1 に答える 1