【问题标题】:VBA/Excel dynamic list controlVBA/Excel动态列表控件
【发布时间】:2015-07-27 20:17:52
【问题描述】:

我想根据之前列表中提供的内容创建选择列表,但存在问题。我正在使用列表验证,但它一直在工作,直到我没有关闭文件。重新打开此文件后,当列表清除时,它给了我一个错误并且不想将数据加载到其中。

所以我决定使用控制组合列表,但是创建数组还有另一个问题......

    Sub Rozwiń298_Zmienianie(Target)
    Dim i As Integer
    Dim j As Integer
    Dim k As Integer
    Dim m As Integer
    Dim lista() As Variant
    i = 1
    j = 1
    m = 0

    Do While Sheets("Dane").Cells(i, 14) <> Target.Text
        i = i + 1
    Loop
    j = i
    Do While Sheets("Dane").Cells(j, 14) = Target.Text
        j = j + 1
    Loop
    j = j - 1
    k = j - i + 1
    ReDim lista(k)
    For m = 0 To k
        lista(m) = Sheets("Dane").Cells(i, 15).Text
        i = i + 1
    Next m

    Sheets("Formularz").Shapes.Range(Array("Drop Down 298")).Select
    With Selection
        .List = lista
    End With
End Sub

现在有 2 个问题......它以某种方式工作,但在从列表中选择某些内容后给出了非常奇怪的错误(参数不是可选的) - 我做错了什么?

第二: 如何在 Worksheet_Change(ByVal Target As Range) 条件中设置从该列表中挑选内容并使用挑选的数据创建另一个挑选列表?

【问题讨论】:

标签: vba excel dynamic-picklist-vtiger


【解决方案1】:

尝试添加这段代码。我已经测试过了。效果很好。

Dim validationRange As Range

Sheets("Formularz").Cells(6, 2).Select

Set validationRange = Sheets("Dane").Range("P" & i & ":P" & j)

With Selection.Validation
    .Delete
    .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="='Dane'!" & validationRange.Address
    .IgnoreBlank = True
    .InCellDropdown = True
    .InputTitle = ""
    .ErrorTitle = ""
    .InputMessage = ""
    .ErrorMessage = ""
    .ShowInput = True
    .ShowError = True
End With

【讨论】:

  • 不过,这个设置的validationRange = (...)还是有一个object required错误
  • 再试一次。不要错过顶部validationRange的声明。它会很好用。
猜你喜欢
  • 1970-01-01
  • 2018-02-17
  • 2015-06-09
  • 2019-04-29
  • 1970-01-01
  • 2019-02-20
  • 1970-01-01
  • 2016-11-06
  • 2021-07-14
相关资源
最近更新 更多