所以我想要做的就是在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中的工作表。
答案 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)
让它完美运作。