如何解决如何在 VBA 中使用动态行源创建列表框
我收到一个错误信息(运行时错误 '13' ; 类型不匹配)。 我是 VBA 新手,很抱歉,如果这是一个愚蠢的问题。
BaseForm = 我的用户表单
将 iRow 和 iCol 淡化为整数
Sub refresh_data() '刷新列表框数据
Set ws = ThisWorkbook.Sheets("DATA")
iRow = ws.Cells(Rows.Count,1).End(xlUp).Row
iCol = ws.Cells(1,Columns.Count).End(xlToLeft).Column
With BaseForm
.ListBox1.ColumnCount = iCol
.ListBox1.ColumnHeads = True
If iRow > 1 Then
.ListBox1.RowSource = Range(Cells(1,1),Cells(iRow,iCol))
Else
.ListBox1.RowSource = Range(Cells(1,Cells(1,iCol))
End If
End With
结束子
解决方法
- 处理 Excel 行时,使用
Long
而不是Integer
- 完全限定您的范围对象。你们很多人想阅读Why does Range work,but not Cells?
-
.RowSource
期望一个String
这是你正在尝试的吗? (未经测试)
Option Explicit
Dim iRow As Long
Dim iCol As Long
Sub refresh_data() ' refresh the listbox data
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("DATA")
iRow = ws.Cells(Rows.Count,1).End(xlUp).Row
iCol = ws.Cells(1,Columns.Count).End(xlToLeft).Column
With BaseForm
.ListBox1.ColumnCount = iCol
.ListBox1.ColumnHeads = True
If iRow > 1 Then
.ListBox1.RowSource = "'" & ws.Name & "'!" & _
ws.Range(ws.Cells(1,1),ws.Cells(iRow,iCol)).Address
Else
.ListBox1.RowSource = "'" & ws.Name & "'!" & _
ws.Range(ws.Cells(1,ws.Cells(1,iCol)).Address
End If
End With
End Sub
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。