引用具有变量名称的新工作表

时间:2018-03-28 13:36:50

标签: excel vba excel-vba

所以我想要做的就是在Visual Basic VBA for Excel中这样做:

Dim var As String
Dim wsNew as Worksheet  

Sheets.Add After:=ActiveSheet

var = Range("A34").Value
Worksheets(wsNew).Cells(1, 2) = var

但在这种情况下行:Worksheets(wsNew).Cells(1, 2) = var
给出错误

  

运行时错误13,输入不匹配

我不想给新工作表提供字符串名称,因为那时我总是要重命名工作表。因此,可以使用变量名称而不是字符串名称来引用VBA中的工作表。

2 个答案:

答案 0 :(得分:1)

您需要将Worksheet对象分配给变量,然后您可以在代码中直接引用它。您还需要明确引用Activesheet,否则代码将无法正常工作,尤其是在这种情况下。

Dim wsCurr as Worksheet
Set wsCurr = Worksheets("mySheet") 'change as needed (I avoid ActiveSheet whenever possible)

Dim myVariable As String
myVariable = wsCurr.Range("A34").Value

Dim wsNew as Worksheet      
Set wsNew = Sheets.Add(After:=wsCurr)

wsNew.Cells(1, 2) = myVariable

另外,请注意我将var更改为myVariable的方式。 CallumDA在你的帖子下面有关命名变量的评论中有一个很好的观点。

答案 1 :(得分:0)

此:

Dim wsCurr as Worksheet
Set wsCurr = Worksheets("mySheet") 'change as needed (I avoid ActiveSheet whenever possible)

Dim myVariable As String
myVariable = wsCurr.Range("A34").Value

Dim wsNew as Worksheet      
Set wsNew = Sheets.Add After:=wsCurr

wsNew.Cells(1, 2) = myVariable

像魅力一样工作,非常感谢你们所有人。

只有这个最小的东西才是Excel给我的错误:

Set wsNew = Sheets.Add After:=wsCurr

所以改为:

Set wsNew = Sheets.Add(After:=wsCurr)

让它完美运作。