具有动态范围的下拉列表的VBA代码

具有动态范围的下拉列表的VBA代码,vba,excel,Vba,Excel,我试图为列中的“n”单元格(比如100)中的多个下拉列表编写一个宏。这些下拉列表的范围(下拉值)必须从具有相同行数(在本例中为100)的表中选择 我无法为公式部分(下面突出显示)运行for循环。我希望宏为I=2选择D2:H2范围,为I=3选择D3:H3范围,依此类推。我该怎么做?除此之外还有其他选择吗 期待有价值的投入。 谢谢 以下代码应该可以工作: Option Explicit Sub S_Dropdown3() Dim wks As Worksheet Dim i As Integer

我试图为列中的“n”单元格(比如100)中的多个下拉列表编写一个宏。这些下拉列表的范围(下拉值)必须从具有相同行数(在本例中为100)的表中选择

我无法为公式部分(下面突出显示)运行for循环。我希望宏为I=2选择D2:H2范围,为I=3选择D3:H3范围,依此类推。我该怎么做?除此之外还有其他选择吗

期待有价值的投入。 谢谢


以下代码应该可以工作:

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
    (如果打开了多个Excel文件)
  • 不能
    选择图纸。
    仅选择范围。工作表只能
    激活
    。早期版本的Excel不介意。Excel的任何版本都不会在该行中抛出错误
  • 完全限定
    范围(“B”和i)
  • 最后,按照初始帖子的要求将公式模块化
  • 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