首页 文章

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

提问于
浏览
1

所以我想要做的就是在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 回答

  • 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在你的帖子下面有关命名变量的评论中有一个很好的观点 .

  • 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)
    

    使它完美地工作 .

相关问题