2013-04-17 36 views
1

我正試圖用一個變量爲一個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 

據就行表示數(asheet1)。選擇

任何幫助將非常感謝!

+0

一般提示是始終使用Option Explicit(工具>選項>編輯器>需要變量聲明),這將強制您標註所有使用的變量和對象。如果你將asheet1標註爲'Worksheet',那麼它絕不允許將'Set'設置爲'Range' –

回答

3

asheet1不是字符串,而是將範圍對象賦給它。您應該聲明asheet1爲字符串,並將此行更改爲

Dim asheet1 as string 
asheet1 = ThisWorkbook.Worksheets("input").Range("D12").Value 

這應該使其工作!

編輯

從字符串var中刪除了Set關鍵字。

+1

簡答題+1。 – shahkalpesh

+0

謝謝你的回答,不幸的是,它給出了設置asheet1 = – subtilty

+0

@subtilty'對象需要'的錯誤對不起,我應該刪除Set關鍵字,因爲asheet1是一個字符串,不再是一個對象。 – Ateszki

2
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)Option Explicit是必須的。
2)定義變量並適當命名。即定義變量,它是指單元格/範圍,而不是aSheet - 它使讀者感到困惑

+0

這不是他要求的。 – Ateszki

+0

@Ateszki:我已糾正它。請檢查。謝謝。 – shahkalpesh

+0

我看到你編輯過。 – subtilty