我试图编写一个宏,它结合了来自不同工作簿的已定义工作表,并将它们保存到单独的工作簿中。每个工作簿都包含一个名称为MODEL
的工作表。此工作表有一个组合框,这个组合框与工作表名称相关联,如下面的代码所示:
Sub ComboBox1_Change()
Application.ScreenUpdating = False
Select Case Sheets("MODEL").Range("code_plant")
Case 1
Sheets("MODEL").Range("price_zero").Copy _
Destination:=Sheets("MODEL").Range("price_on_view")
End Select
Application.ScreenUpdating = True
End Sub
当所有工作表在一个工作簿中组合在一起并重命名时,就会出现问题。我需要修复我的组合框宏,应该在重命名后引用当前(重命名的)工作表名称。我试图使用以下功能,但无法确定如何以正确的方式包含在我的代码中。
Function MySheet()
Application.Volatile
MySheet = Application.Caller.Worksheet.CodeName
End Function
谢谢!
答案 0 :(得分:2)
您的ComboBox1_Change
事件已在工作表模块中声明,因此您应该在代码中使用Me
关键字来引用工作表,而不是使用{{1}按名称查找工作表}}
在每个源表中更改事件处理程序,如下所示:
Sheets("MODEL")
答案 1 :(得分:1)
由于您的组合框位于同一张纸中,因此您无需指定工作表名称或使用其他任何内容来限定它。范围将指向Activesheet
( ComboBox1所在的位置),即Sheets("MODEL")
或其新名称。
Sub ComboBox1_Change()
Application.ScreenUpdating = False
Select Case Range("code_plant")
Case 1: Range("price_zero").Copy Range("price_on_view")
End Select
Application.ScreenUpdating = True
End Sub