带有用户窗体的活动表

Activesheet with userform

我有一个用户表单,它应该根据组合框“(Select 要更新的层)”一次更新不同的 sheets,请参阅附图,我一按下SAVA DATA 按钮 return 错误。 “运行 时间错误 380” 这是我的代码。列表框应该根据在组合框“(Select 要更新的层)”

下选择的 sheet 进行更新

.ListBox1.ColumnCount = 28
.ListBox1.ColumnHeads = True
.ListBox1.ColumnWidths = "30,50,40,40,35,43,43,28,25,25,25,25,37,50,45,55,70,60,47,35,35,40,40,40,40,50,160,40"


If iRow > 1 Then
   .ListBox1.RowSource = "ActiveSheet!A9:AB" & iRow
Else
   .ListBox1.RowSource = "ActiveSheet!A9:AB9"
   
End If
End With 

RowSource 属性 需要分配一个字符串引用前缀为 实际的 literal worksheetname 加上感叹号(例如 Sheet1!A9:AB9), 不是以“ActiveSheet”开头的字符,因为大概不会有一个 sheet 命名 "ActiveSheet".

如果您想使用 VBA 的 ActiveSheet 属性 作为第一部分 您可以使用以下方式获取 sheet 的 地址 通过 additional External:=True 参数(注意 :=)其中 returns 完全限定的 sheet 名称为字符串:

    .RowSource = ActiveSheet.Range("A9:AB" & iRow).Address (External:=True)

另一种方法是通过&符号连接器简单地连接字符串部分&, 例如

  • ActiveSheet.Name & "!A9:AB" & iRow(使用任何活动的名称 sheet)或
  • ThisWorkbook.Worksheets("Sheet1").Name & "!A9:AB" & iRow(使用表格 sheet 名称)或
  • Sheet1.Name & "!A9:AB" & iRow(使用代号)