You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VBA用户窗体ComboBox联动:匹配工作表数据填充下拉框

完善VBA代码实现双条件筛选填充ComboBox

需求回顾

在模态用户窗体中,选择第一个下拉框ddlArtist的值后,需从shInventory工作表的tblInventory表格中筛选满足以下两个条件的行:

  • B列(艺术家名称)与ddlArtist选中值匹配
  • G列(状态)为"A"
    然后将这些行对应的C列(艺术品)数据填充到第二个下拉框ddlArtwork中。

完善后的代码

替换原ddlArtist_Click过程的代码为以下内容:

Private Sub ddlArtist_Click()
    ddlArtwork.Clear
    
    ' 先判断是否选择了艺术家,避免空值筛选
    If ddlArtist.Value = "" Then Exit Sub
    
    Dim dataRows As Range
    Dim aRow As Range
    
    ' 直接获取表格的数据行(跳过表头,比遍历整个表格更高效)
    Set dataRows = shInventory.ListObjects("tblInventory").DataBodyRange
    
    ' 遍历每一行进行双条件判断
    For Each aRow In dataRows
        ' 同时检查B列(第2列)匹配艺术家,且G列(第7列)状态为"A"
        If aRow.Cells(1, 2).Value2 = ddlArtist.Value And _
           UCase(aRow.Cells(1, 7).Value2) = "A" Then
            ddlArtwork.AddItem aRow.Cells(1, 3).Value2
        End If
    Next aRow
End Sub

关键修改说明

  1. 添加状态条件:在If判断里新增了对G列(第7列)状态为"A"的检查,用UCase()统一转成大写,避免大小写不匹配的问题。
  2. 优化遍历范围:使用DataBodyRange直接获取表格的数据行,跳过了表头行,不用额外判断是否是表头,更高效。
  3. 增加空值判断:先检查ddlArtist是否有选中值,避免未选择时执行无效遍历。
  4. 明确单元格引用:把aRow.Value2(1, x)改成aRow.Cells(1, x).Value2,代码可读性更强。

内容的提问来源于stack exchange,提问作者user3544580

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 03:43:12