2017-08-07 11 views
0

現在、保護されたドキュメントにドロップダウンリストを追加しようとしています。データ検証を追加するときのランタイムエラー1004

私が使用しているコードは次のとおりです。

Private Sub AddDropDown_Click() 
    ActiveSheet.Unprotect 

    Dim currCell As Range 
    Dim lastRow As Long 
    With ActiveSheet 
     lastRow = ActiveSheet.Cells(1048576, 1).End(xlUp).Row 
    End With 
    For Each currCell In Range("K4:K" & lastRow) 
     With currCell.Validation 
      .Delete 
      .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="=INDIREKT(J" & currCell.Row & ")" 
      .IgnoreBlank = True 
      .InCellDropdown = True 
      .InputTitle = "" 
      .ErrorTitle = "" 
      .InputMessage = "" 
      .ErrorMessage = "" 
      .ShowInput = True 
      .ShowError = True 
     End With 
    Next currCell 
    ActiveSheet.Protect 
End Sub 

をしかし、私はそれが.Addがexcecutedされる行でエラー1004をスローするコードを実行しようとします。

パラメータの大部分は、私はデバッグ中にそれらをwhatchingしようとすると同じエラーをスロー:

Debug Screenshot Validation

誰もがこれを引き起こすもののアイデアを持っていますか?

+1

まず、 'formula'を範囲で修飾する必要がありますので、' cell.formula <> "" '' '' INDIREKt "'とする必要がありますか? Excelのドイツ語設定を使用していますか? –

+0

'Formula'変数はどこにありますか? ( 'If Formula <>" "Then')' Cell.Formula'を意味しないのですか?第2に、あなたのコードでドイツ語版の間接的な数式を使用しています - 英語を試してみてください。 –

+0

@ShaiRadoはい私はドイツ語のExcel版をスクリーンショットで見ることができます。数式はいくつかのものを変更する前に私がそこに持っていた部分でした。それを質問から削除しました。 – lightlike

答えて

0

ドイツの公式はOKです。しかし、デバッグにこれらのポイントを以下試してください。

  1. は何か他のものに名前を変更cell
  2. 次のエラー履歴書上で削除します。例えば。 myCellまたは rngCell
  3. For Each cell In Range("K4:K" & lastRow)の前に置きます。
  4. 先頭にOption Explicitを置き、コードをコンパイルしてみてください。
+0

質問をすべてそれを変更して変更しました。まだ動作しません。 "On Error"も機能しませんでした。私はまだエラーメッセージを受け取りました。そして "lastRow"は2214年の間違いです。 – lightlike

関連する問題