传递工作表作为参数,然后使用该参数作为variables
为什么我收到aSheet_Recon (MAIN)
的对象所需的错误aSheet_Recon (MAIN)
有一张名为MAIN
的表格。 我没有在其他地方声明somesheet
。
Sub aSheet_Recon(somesheet As Worksheet) ... End Sub Sub tester() aSheet_Recon (MAIN) End Sub
从答案更新和新的挑战
然后,如何通过剩下的过程将工作表参数用作variables。 当variablescA
尝试引用作为传递的工作表参数的MAIN
值时,会收到types不匹配错误。
Sub aSheet_Recon(sheetname As Worksheet) cName = "Fund ID" cA = Sheets(sheetname).Rows.Find(What:=UCase(cName), LookAt:=xlWhole, SearchDirection:=xlNext).Column End Sub
你必须这样做:
Sub tester() dim ws as worksheet 'Creating a worksheet variable to pass set ws = Sheets("MAIN") 'Assigning the sheet you want to pass to this variable aSheet_Recon(ws) 'Sending the newly created WorkSheet variable containing your worksheet End sub
aSheet_Recon
需要一个WorkSheet参数,除非这正是你发送的内容(不是工作表的名字,代号,索引等,而是工作表本身),否则将不能工作。
编辑:
在回答自己的编辑时,以下是如何使用您收到的工作表作为参数:
Sub aSheet_Recon(sheetname As Worksheet) cName = "Fund ID" cA = sheetname.Rows.Find(What:=UCase(cName), LookAt:=xlWhole, SearchDirection:=xlNext).Column End Sub
你也可以这样写:
sheetname.Range("A1") = "Hello!"
事实上,“sheetname”本身就被认为是一个Worksheet,而不是一个表的名字。 对于工作表的名称,您可以编写sheetname.Name:
msgbox sheetname.Name
将返回“主”
因此,我build议将“sheetname”更改为“MySheet”或更less的混淆。
表格不是全局对象(如何处理表格“Dim”或“500 x Beef Supreme”)? 您需要从Sheets集合中获取表单:
aSheet_Recon Sheets("MAIN")