如何在单独的工作表中查找特定的单元格值?

Unb*_*ain 1 excel vba excel-vba

我有一段代码在当前工作表中搜索特定单元格值的范围,然后对该列执行操作.宏由同一页面上的表单控件按钮启动.我需要将表单控件按钮移动到另一个工作表,但我不知道如何将我的代码更改为仅在sheet1中搜索而不是在按钮所在的工作表中搜索.

下面是我在使用同一工作表上的按钮作为数据时的代码.我只需要它来查看sheet1而不是当前工作表.

Dim R1 As Range
    Set R1 = Range(Range("A2:AX2").Find("BMA Authorization ID"), Range("A2:AX2").Find("BMA Authorization ID").End(xlDown))
    R1.Select
    R1.Copy
    R1.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
Run Code Online (Sandbox Code Playgroud)

小智 5

使用With ... End With语句设置范围/单元格父工作表.

with worksheets("Sheet1")   '<~~change to suit
    with .Range(.Range("A2:AX2").Find("BMA Authorization ID"), _
                .Range("A2:AX2").Find("BMA Authorization ID").End(xlDown))
        .value = .value  'same as .Copy .PasteSpecial xlPasteValues
    end with
end with
Run Code Online (Sandbox Code Playgroud)

请注意,所有这些Range(...)都是现在.Range(...).前缀句点(aka .句号)使所有范围的父级在With .. End With中引用的工作表.

  • @findwindow - 如果有成千上万的那么`.Range(.Cells(2,app.Match("BMA授权ID",.行(2),0)),. Cells(2,app.Match("BMA授权ID) ",.行(2),0)).结束(xlDown))`可能稍微快一些,但对于一次操作,我认为你甚至难以衡量差异.至少它不是逐个细胞的. (2认同)
  • @BruceWayne - `范围("A1,D4")`是A1和D4的**联盟**; 即两个细胞.`范围("A1","D4")`是**范围**,顶部=左侧为A1,右下方为D4; 即十六个细胞.OP的方法是后者.呃...是的,默认值是值但不总是; `set rng = Range("A1")`不将rng设置为A1的值. (2认同)
  • @BruceWayne - `设置rng =范围("A1")`创建一个[范围对象](https://msdn.microsoft.com/en-us/library/office/ff838238.aspx).如果A1举办了16的值,你不能`16.Font.Color = vbRed`但你可以`rng.Font.Color = vbRed`就像你`范围( "A1").Font.Color = vbRed `.出于所有意图和目的,[Range.Cells属性](https://msdn.microsoft.com/en-us/library/office/ff196273.aspx)是Range.Object. (2认同)

Sco*_*ner 5

正如findwindow所说; 你需要对表格进行限定.Normaly我会在评论中留下这个,但是这条线太长,不能使用带有块.

Dim R1 As Range
Dim ws As Worksheet

Set ws = Sheets("Sheet1")'Change this name to the sheet desired.
'Use a with block.
'When using a with block .Range = ws.Range
With ws
    Set R1 = .Range(.Range("A2:AX2").Find("BMA Authorization ID"), .Range("A2:AX2").Find("BMA Authorization ID").End(xlDown))
    R1.Value = R1.Value
End With
Run Code Online (Sandbox Code Playgroud)