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

Excel VBA中如何通过变量修改RowSource属性?

问题解决方法

你的错误根源在于字符串拼接方式错误,代码里把变量i当成了字符串字面量"i"来拼接,导致最终生成的RowSource是GetChosenIncomei——这个名称在你的名称管理器里不存在,所以触发"无效属性值"错误。

修正代码

把GetMonth过程里的赋值语句改成以下写法:

Private Sub GetMonth()
    Me.lstIncome.RowSource = "GetChosenIncome" & i
End Sub
  • VBA中推荐用&做字符串拼接(+也能拼,但遇到数值和字符串混合时容易出类型错误)
  • 这样当i=1时,最终会生成GetChosenIncome1,和你名称管理器里定义的名称匹配。

额外检查点

  • 确认名称管理器中确实存在GetChosenIncome1(对应i=1时的目标名称),如果i会取其他值,也要确保对应名称都已定义
  • 如果GetChosenIncome是参数查询而非多个独立名称,那你需要改用参数传递的方式,示例代码如下:
Private Sub GetMonth()
    Dim qdf As QueryDef
    Set qdf = CurrentDb.QueryDefs("GetChosenIncome")
    ' 设置参数值,假设参数名为@MonthID
    qdf.Parameters("@MonthID") = i
    ' 将查询结果作为列表框的数据源
    Me.lstIncome.RowSource = qdf.SQL
    Set qdf = Nothing
End Sub

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 03:15:55