首页 > 解决方案 > VBA:使用连接字符串作为命令

问题描述

如何在 VBA 中使用连接字符串作为命令?以下代码导致以下错误:

运行时错误 424:需要对象

Sub run()

    Dim pic As Picture
    Dim wks As Worksheet
    
    Set wks = Sheets("Counter Party Select")
    wks.Unprotect
    
    Dim company As String
    Dim sRange As String
    Dim concate As String
    Dim quote As String
    
    Dim s1 As String
    
    company = wks.Range("B3")
    
    'This vlookup pulls the correct range based on the value
    sRange = Application.VLookup(company, Sheets("Company Logos").Range("D3:E1000"), 2)
    s1 = "Company Logos"
    quote = Chr$(34) 'The character number of a quatation mark
    Concat = "Sheets(" & quote & s1 & quote & ")." & sRange

    'This results in Concat = "Sheets("Company Logos").Range("A146:A148")"
    
    Concat.Copy  'The error occurs on this line 
    
    wks.Select
    wks.Range("D2").Select
    ActiveSheet.Paste
    wks.Range("A1").Select

End Sub

如何重写此代码,以便我可以使字符串成为对象并在.Copy其上执行命令?

标签: excelvba

解决方案


您不能将连接的字符串用作完整的 VBA 语句。但是,您可以轻松地连接范围地址。

你不能马上这样做,因为你通过存储错误的数据使你的生活变得更加复杂:

'This results in Concat = "Sheets("Company Logos").Range("A146:A148")"

您不应该将文字文本存储在Range("A146:A148")您的第二列中VLookup。您应该只将地址本身存储A146:A148为文本。

相应地修复工作表上的数据,它将按预期工作:

Dim Concat As Range
Set Concat = Sheets(s1).Range(sRange)

推荐阅读