Excel VBA:使用变量代替引号

时间:2016-08-30 06:09:15

标签: excel-vba vba excel

我正在尝试复制不同工作簿中的单元格内容,但希望用户能够通过在当前工作簿的单元格中键入单元格的名称来指定要启动的单元格(即宏代码在。)

(顺便说一下,请原谅这个问题的基本性质以及我在词汇方面的任何明显错误;我是新手在尝试这个!)

我已经提出了以下代码,但是得到了“运行时错误'91':对象变量或者没有设置块变量”消息。

(请注意,我还使用了用户输入来引用不同的工作簿。这部分有效。)

Sub OpenWorkBook()

    Dim Src As Workbook
    Set Src = Workbooks.Open(Range("B3"))

    Dim StrtCell As String
    StrtCell = Range("B4")

    Src.Sheets("Sheet1").Range(StrtCell).Copy
    ThisWorkbook.Activate
    Range("A6").PasteSpecial

End Sub

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

最好始终使用明确的工作表对象限定您的Range()调用,否则他们将使用当时正在发生的任何活动表。

当特定行运行时,依赖某些特定工作表处于活动状态会使代码变得脆弱且难以调试。

Sub OpenWorkBook()

    Dim Src As Workbook
    Dim StrtCell As String
    Dim sht as Worksheet

    Set sht = Activesheet

    Set Src = Workbooks.Open(sht.Range("B3"))
    StrtCell = sht.Range("B4")

    Src.Sheets("Sheet1").Range(StrtCell).Copy
    ThisWorkbook.Activate
    sht.Range("A6").PasteSpecial

End Sub