如何传递范围内的string值作为参考?

我有一个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 

在这里输入图像说明

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

你是正确的,你将开始与Range.Find方法位于rngX ,但你不需要解决这个问题,随后用于引用Range对象的Range.Address属性 。 使用rngX作为Range.Object可以生成起始单元格,而rngX.Row可以帮助获取Range.Copy方法的左下angular单元格。

 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 

喜欢这个?

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

或者,没有中间variables:

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

我会build议Range("B2").End(xlDown)可能不是理想的,这是非常不可靠的工作在非连续区域的数据,如在你的截图。