运行时错误380:无法设置RowSource属性,无效属性值求助
解决Run-time Error 380(RowSource属性无效)的方法
核心修复:修正工作表名称的引用格式
如果你的工作表名称包含空格、中文或特殊字符,直接拼接的RowSource字符串会因格式错误触发报错。必须用单引号包裹工作表名称,修改代码如下:
.RowSource = "'" & sh.Name & "'!A2:H" & lr
优化数据范围的定位逻辑
原代码用CountA(A:A)计算最后一行,容易因A列中间有空行导致范围错误。换成更可靠的行定位方式:
' 替换原lr计算代码 Dim lr As Long lr = sh.Cells(sh.Rows.Count, "A").End(xlUp).Row ' 若只有表头(A1有内容,A2及以下为空),设置lr=2避免无效范围 If lr < 2 Then lr = 2
排查其他潜在问题
- 确认
sh对象已正确赋值:需提前通过Set sh = ThisWorkbook.Worksheets("你的工作表名称")指定目标工作表,避免sh为空引用。 - 检查列数匹配:确保代码中
ColumnCount = 8与工作表A:H列的实际列数一致(你的截图显示表头为8列,此点大概率没问题)。 - 验证生成的范围:添加
Debug.Print "'" & sh.Name & "'!A2:H" & lr,运行后打开立即窗口(Ctrl+G),复制字符串到Excel地址栏,确认能选中有效区域。
替代方案:改用List属性加载数据
若RowSource仍有问题,可直接将单元格数据赋值给ListBox的List属性,规避格式限制:
With Me.ListBox2 .ColumnCount = 8 .ColumnWidths = "0,120,70,70,70,70,70,70" ' 加载A2到最后一行的数据 .List = sh.Range("A2:H" & lr).Value ' 手动设置表头(需关闭自动表头) .ColumnHeads = False .AddItem For i = 0 To 7 .List(0, i) = sh.Cells(1, i + 1).Value Next i End With
内容的提问来源于stack exchange,提问作者Simiyu S
相关产品推荐
相关产品推荐

