Vba 使用变量作为工作表名称

Vba 使用变量作为工作表名称,vba,excel,Vba,Excel,我在尝试为sheetname使用变量时遇到运行时13错误,如下所示: Sub inputdata() Set asheet1 = ThisWorkbook.Worksheets("input").Range("D12") Set rangeDate = ThisWorkbook.Worksheets("input").Range("inputdate") Range("F12:M12").Copy Sheets(asheet1).Select 线路图Sasheet1上出现错误。选择 任何帮

我在尝试为sheetname使用变量时遇到运行时13错误,如下所示:

Sub inputdata()

Set asheet1 = ThisWorkbook.Worksheets("input").Range("D12")
Set rangeDate = ThisWorkbook.Worksheets("input").Range("inputdate")

Range("F12:M12").Copy
Sheets(asheet1).Select
线路图Sasheet1上出现错误。选择

任何帮助都很好,谢谢

Option Explicit

Sub inputdata()
dim inputSheet as WorkSheet
dim aCellOnInputSheet as Range
dim inputDateCell as Range
dim userSheetName as String


Set inputSheet = ThisWorkbook.Worksheets("input") 

Set aCellOnInputSheet = inputSheet.Range("D12")
userSheetName = aCellOnInputSheet.Value
Set inputDateCell = inputSheet.Range("inputdate")

Range("F12:M12").Copy
Sheets(userSheetName).Select

End Sub
编辑:几点 1选项显式是必须的。 2定义变量并适当命名。i、 e.定义一个变量,该变量引用一个名为Range而不是aSheet的单元格/区域-这会使读取器感到困惑

编辑:几点 1选项显式是必须的。
2定义变量并适当命名。i、 e.定义一个变量,该变量引用一个名为Range而不是aSheet的单元格/区域-这会使读取器感到困惑。

asheet1不是字符串,您正在向它指定一个范围对象。您应该将asheet1声明为string,并将此行更改为

Dim asheet1 as string
asheet1 = ThisWorkbook.Worksheets("input").Range("D12").Value
这应该会成功的

编辑


从字符串变量中删除了Set关键字。

asheet1不是字符串,您正在为其指定一个范围对象。您应该将asheet1声明为string,并将此行更改为

Dim asheet1 as string
asheet1 = ThisWorkbook.Worksheets("input").Range("D12").Value
这应该会成功的

编辑


从字符串变量中删除Set关键字。

这不是他要求的。这不是他要求的。谢谢你的回答,不幸的是,它在Set asheet1=@subtilty上给出了“object required”错误。很抱歉,我应该删除Set关键字,因为asheet1是字符串,不再是对象。谢谢你的帮助,这很有帮助。我建议使用Value2,除非明确需要单元格格式…@K_B:Value2不是字符串内容所必需的。尝试在使用货币数据类型格式化的单元格上使用Value vs Value2。感谢您的回答,不幸的是,它在Set asheet1=@subtilty上给出了“object required”错误。很抱歉,我应该删除Set关键字,因为asheet1是一个字符串,不再是对象。感谢您的帮助,这很有帮助。我建议使用Value2,除非明确需要单元格格式…@K_B:Value2不是字符串内容所必需的。尝试在使用货币数据类型格式化的单元格上使用Value vs Value2。一般提示是始终使用Option Explicit Tools>Options>Editor>Require Variable Declaration,这将强制您对所使用的所有变量和对象进行尺寸标注。如果您将asheet1标注为工作表,它将永远不允许设置为范围。一般提示是始终使用Option Explicit Tools>Options>Editor>Require Variable Declaration,这将强制您标注所有使用的变量和对象。如果将asheet1标注为工作表,则永远不允许将其设置为范围