Vba 查找一个值,然后复制该值所在的列

Vba 查找一个值,然后复制该值所在的列,vba,excel,Vba,Excel,我试图编写一个宏,它将在表2的标题中找到一个现货价格值,然后将该值复制并粘贴为值,而不是公式。我需要这样做,因为在该列中,我引用了外部工作簿,我需要在不共享其他工作簿的情况下共享此工作表。这是我写的 Sub row() Dim firstrow As Range Dim ColumnToPaste As Range Dim copy As Range Set firstrow = Worksheets("Raw Data").ListObjects("Table2").HeaderRowRan

我试图编写一个宏,它将在表2的标题中找到一个现货价格值,然后将该值复制并粘贴为值,而不是公式。我需要这样做,因为在该列中,我引用了外部工作簿,我需要在不共享其他工作簿的情况下共享此工作表。这是我写的

Sub row()
Dim firstrow As Range
Dim ColumnToPaste As Range
Dim copy As Range

Set firstrow = Worksheets("Raw Data").ListObjects("Table2").HeaderRowRange
Set ColumnToPaste = firstrow.Find("Spot price", , xlValues, xlWhole).Columns(1)

With Worksheets("Raw Data").Range(ColumnToPaste)
    .PasteSpecial Paste:=xlPasteValues
End With

End Sub
该错误发生在以下行:应用程序定义的错误或对象定义的错误:

With Worksheets("Raw Data").Range(ColumnToPaste)

我认为我使用了错误的范围参数,但不确定如何正确地编写它。

以下内容如何,而不是复制整列,指定范围:

Sub row2()
Dim ws As Worksheet: Set ws = Sheets("Raw Data")
'declare and set your worksheet, amend as required
Dim firstrow As Range
Dim ColumnToPaste As Range
Dim LastRow As Long

Set firstrow = ws.ListObjects("Table2").HeaderRowRange
Set ColumnToPaste = firstrow.Find("Spot price", , xlValues, xlWhole).Columns
col = ColumnToPaste.Column
LastRow = ws.Cells(ws.Rows.Count, col).End(xlUp).Row
'get the last row with data on Column A
With ws
    .Range(.Cells(1, col), .Cells(LastRow, col)).Copy
    .Range(.Cells(1, col), .Cells(LastRow, col)).PasteSpecial xlPasteValues
End With
End Sub

您已经为ColumntPaste提供了父工作表和listobject引用。只需与ColumnToPaste一起使用。然后我得到一个范围类的Paste特殊方法失败,这很有意义,因为您没有复制任何内容。注意:不要将copy用作变量名Dim copy as Range这已经是Excel使用的方法名。在粘贴内容之前,需要先复制。我建议在.paste特殊行之前添加一个.Copy行。是的,这也行。由于我的范围是一个表,EndxlUp不适用于复制和粘贴值。相反,我使用了特定数量的行,因为在我的示例中,表的行数总是相同的。顺便说一句,这是你第二次帮助我了。谢谢:@Seidhe没问题,很高兴能为您提供帮助,我们将来可能会再次相遇……: