2017-02-16 9 views
1

"n"個のセルに複数のドロップダウンのマクロを記述しようとしています(100としましょう)。これらのドロップダウンの範囲(ドロップダウン値)は、同じ行数(この例では100)のテーブルから選択する必要があります。ダイナミックレンジのドロップダウンリストのVBAコード

式部分のforループを実行することができません(下に強調表示されています)。私は、マクロをD2:H2の範囲をi = 2、D3:H3をi = 3としたいとします。どうすればいいのですか?これに代わる方法はありますか?

貴重な入力を楽しみにしています。 ありがとうございます!

Sub S_Dropdown3() 

Dim wks As Worksheet: Set wks = Sheets("Sheet1") 

wks.Select 

Dim i As Integer 

For i = 2 To 101 

With Range("B" & i).Validation 

.Delete 

.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _ 

Operator:=xlBetween, **Formula1:="=Sheet2!D2:H2"** 

.IgnoreBlank = True 

.InCellDropdown = True 

.InputTitle = "" 

.ErrorTitle = "" 

.InputMessage = "" 

.ErrorMessage = "" 

.ShowInput = True 

.ShowError = True 

End With 

Next i 

End Sub 

答えて

1

次のコードを動作するはず:

Option Explicit 

Sub S_Dropdown3() 

Dim wks As Worksheet 
Dim i As Integer 

Set wks = ThisWorkbook.Worksheets("Sheet1") 
wks.Activate 

For i = 2 To 101 
    With wks.Range("B" & i).Validation 
     .Delete 
     .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _ 
      xlBetween, Formula1:="=Sheet2!D" & i & ":H" & i 
     .IgnoreBlank = True 
     .InCellDropdown = True 
     .InputTitle = "" 
     .ErrorTitle = "" 
     .InputMessage = "" 
     .ErrorMessage = "" 
     .ShowInput = True 
     .ShowError = True 
    End With 
Next i 

End Sub 

実装の変更:Sheet1からブックのSheet1を指すことを保証するために完全な資格を実装

  1. をコードフォーマット/インデント
  2. マクロが実行されます(複数のExcelファイルが開いている場合)。
  3. シートを.Selectedにすることはできません。シートは.Activatedにしかなりません。以前のバージョンのExcelでは気にしません。 Excelのバージョンでは、その行にエラーが発生することはありません。
  4. 完全修飾修飾.Range("B" & i)
  5. 最後に、最初の投稿で要求された数式をモジュール化します。
+0

これは完全に機能しています。どうもありがとう :) –

関連する問題