Excel VBA在无效工作表上获取表格范围
问题描述:
我无法弄清楚为什么这个表述不起作用。Excel VBA在无效工作表上获取表格范围
Rng = Worksheets(sheetName).ListObjects(table).Range.Select
我有一个片材“sheetX”与调用在全局工作区“的ThisWorkbook”子进程“export_json”的按钮。我希望“Thisworkbook”中的子进程在“A2”的“sheetX”中引用一个表格范围,但它会给出“应用程序定义或对象定义的错误”错误。我不想使用Application.Goto
这是为什么?我俯瞰一些基本的东西
Public Sub CommandButton1_Click()
sheet = ActiveSheet.Name
Call ThisWorkbook.export_json(sheet)
End Sub
Public Sub export_json(sheetName)
table = ThisWorkbook.get_table(Worksheets(sheetName).Range("A2"))
Rng = Worksheets(sheetName).ListObjects(table).Range.Select
Rng = Selection.Address
表是字符串类型片是类型串的正确表名,这样是没有问题的。
答
当你尝试在函数export_json()
中声明Rng
时,你应该把它作为一个字符串传递,你的语法看起来有点小。
Public Sub CommandButton1_Click()
Dim sheetX As String
sheetX = ActiveSheet.Name
Call export_json("sheetX")
End Sub
Private Function export_json(sheetName As String)
table = ThisWorkbook.get_table(Worksheets(sheetName).Range("A2"))
Worksheets(sheetName).ListObjects(table).Range.Select
End Function
答
试试下面的代码,没有必要使用Select
。
此外,我不清楚为什么您将Function
的代码保存在ThisWorkbook
模块中,而不是常规模块。
Public Sub CommandButton1_Click()
Dim TableRangeString As String
TableRangeString = ThisWorkbook.export_json(ActiveSheet.Name)
' for debug
MsgBox TableRangeString
End Sub
Public Function export_json(sheetName) As String
' use the function to return the Range.Address by changing it to return a String
Dim Rng As Range
Set Rng = Worksheets(sheetName).Range("A2").ListObject.Range
export_json = Rng.Address
End Function
不使用'select' ......已经在这里重复了很多次....'RNG =工作表(SHEETNAME).ListObjects(表).Range.Address' – jsotola
你不需要知道表名...这个工程'Rng = ThisWorkbook.Sheets(sheetName).Range(“A2”).ListObject.Range.Address' – jsotola