如何将Range中的字符串值作为参考传递?

时间:2015-11-23 03:17:25

标签: excel vba

我有一个Excel数据表,其中包含有关特定产品的详细信息。在这里,我编写了一个VB脚本,该脚本使用我为所有单个产品指定的唯一产品名称精确定位到特定产品。 当我运行以下代码时:

Private Sub CommandButton23_Click()
Dim rngX As Range
Dim num As String

Set rngX = Worksheets("Sheet1").Range("A1:A10000").Find("CTPT",     lookat:=xlPart)
num = rngX.Address
Range("$A$13:B" & Range("B2").End(xlDown).Row).Copy
Range("F1").PasteSpecial (xlPasteValues)

End Sub

enter image description here

在上面的代码中我得到了产品“CTPT”所在的位置,单元格位置的地址存储在“num”中。  如何在范围函数中指定“num”单元格地址$ A $ 13,以便我可以选择与该特定产品相关的所有参数,并将其复制并粘贴到F1单元格中。

2 个答案:

答案 0 :(得分:2)

您的说法是正确的,因为您将使用Range.Find method找到rngX,但您无需将其解析为随后用于参考的Range.Address property一个Range object。使用rngX作为Range.Object可以生成起始单元格,rngX.Row可以帮助获取Range.Copy method的左下角单元格。

Private Sub CommandButton23_Click()
    Dim rngX As Range
    Dim num As String

    Set rngX = Worksheets("Sheet1").Range("A1:A10000").Find("CTPT", lookat:=xlPart)
    Range(rngX, Range("B" & rngX.Row).End(xlDown)).Copy
    Range("F1").PasteSpecial (xlPasteValues)
End Sub

答案 1 :(得分:0)

喜欢这个吗?

Range(num & ":B" & Range("B2").End(xlDown).Row).Copy

或者,没有中间人num变量:

Range(rngX.Address & ":B" & Range("B2").End(xlDown).Row).Copy

我会建议Range("B2").End(xlDown)可能不理想,在处理截图中非连续区域的数据时尤其不可靠。