首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从下拉列表中选择应显示结果

从下拉列表中选择应显示结果
EN

Stack Overflow用户
提问于 2016-01-10 01:42:38
回答 2查看 56关注 0票数 0

我在A1中放置了一个下拉列表“汽车”和“自行车”,一旦我选择了“汽车”或“自行车”,它应该会显示sheet5中汽车和自行车的品牌列表。

当我从下拉菜单中选择“汽车”或“自行车”时,我必须运行一个宏。

但是一旦我从下拉列表中选择了任何一个,结果应该会显示出来,而不是运行宏模块。

我在下面的模块中使用了

代码语言:javascript
复制
Sub validation()

    Dim MyList(2) As String
    MyList(0) = "Cars"
    MyList(1) = "Bikes"
    MyList(2) = ""

    With Range("A1").validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
             Operator:=xlBetween, Formula1:=Join(MyList, ",")
    End With

    If Range("A1") = "Cars"
        Sheets("Sheet5").Range("Carsbrand").Copy Destination:=Sheets("Sheet1").Range("B9:E17")
        'the above line copies car brand names from sheet5
    ElseIf Range("A1") = "Bikes" Then
        Sheets("Sheet5").Range("Bikesbrand").Copy Destination:=Sheets("Sheet1").Range("B9:E11")
        'the above line copies car brand names from sheet5
    End If
End Sub
EN

回答 2

Stack Overflow用户

发布于 2016-01-10 01:59:52

您的代码在cell A1中设置了数据验证,但它实际上并没有在A1中放置任何内容,因此这两个列表都不会被复制。

您需要另一个事件宏来监视对cell A1的更改并执行复制。将此代码放入工作表代码区

代码语言:javascript
复制
Private Sub Worksheet_Change(ByVal Target As Range)
   Dim A1 As Range
   Set A1 = Range("A1")
   If Intersect(A1, Target) Is Nothing Then Exit Sub

   Application.EnableEvents = False
      If Range("A1") = "Cars" Then
             Sheets("Sheet5").Range("Carsbrand").Copy Destination:=Sheets("Sheet1").Range("B9:E17")
      ElseIf Range("A1") = "Bikes" Then
          Sheets("Sheet5").Range("Bikesbrand").Copy Destination:=Sheets("Sheet1").Range("B9:E11")
      End If
   Application.EnableEvents = True
End Sub

EDIT#1:

此版本将避免出现警告消息,并在尝试粘贴之前清理目标区域:

代码语言:javascript
复制
Private Sub Worksheet_Change(ByVal Target As Range)
   Dim A1 As Range
   Set A1 = Range("A1")
   If Intersect(A1, Target) Is Nothing Then Exit Sub

   Application.EnableEvents = False
      Sheets("Sheet1").Range("B9:E17").Clear
      If Range("A1") = "Cars" Then
             Sheets("Sheet5").Range("Carsbrand").Copy Destination:=Sheets("Sheet1").Range("B9:E17")
      ElseIf Range("A1") = "Bikes" Then
          Sheets("Sheet5").Range("Bikesbrand").Copy Destination:=Sheets("Sheet1").Range("B9:E11")
      End If
   Application.EnableEvents = True
End Sub
票数 0
EN

Stack Overflow用户

发布于 2016-01-10 02:00:58

如果我没理解错的话,您希望在单元格A1中选择了一个选项后,宏就会自动运行吗?

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34696774

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档