关于VBA的Find函数

我想在SHEET1里的C1单元格显示从SHEET2的A列里的数据表查找的100的数据的右边的值

Private Sub CommandButton1_Click()
With Sheet2.Columns("A:A")
Set c = .Find(100, LookIn:=xlValues)
Sheet1.Range("c1").Value = Cells(c.Row, 2)
End With
End Sub

请问有什么问题,请高手指教,谢谢!

  在Excel VBA中Find函数的基本用法。Find函数就是Excel表格中的查找功能,可以通过录制宏的方法来获得Find的代码。
  Sub Macro1()
  Cells.Find(What:="A", After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
  xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
  , SearchFormat:=False).Activate
  Cells.FindNext(After:=ActiveCell).Activate
  End Sub
  从上面可以看到Find函数共有8个参数,分别对应Excel表格查找里面选项的各个项目,这里我就不多说了,感兴趣可以自己试下,其中只有一个参数是必须的,那就是"What",即要找的内容。下面来看整理之后的代码
  Sub Find演示()
  Dim rng
  Set rng = ActiveSheet.UsedRange.Find(What:="A")
  'MsgBox "字母A地址为" & rng.Address(0, 0)
  'MsgBox "字母A所在行为" & rng.Row
  MsgBox "字母A所在列为" & rng.Column
  End Sub
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-02-24
Private Sub CommandButton1_Click()
With Sheet2.Columns("A:A")
Set c = .Find(100, LookIn:=xlValues, LookAt:=xlWhole)
Sheet1.Range("c1").Value = c.Offset(0, 1).Value
End With
End Sub
------
LookAt:=xlWhole 表示查找时整个单元格匹配,而不匹配1005、51008之类的数字
Offset(0, 1)表示在c的位置上,行移动0,列右移1 ,的单元格
第2个回答  2011-02-24
Private Sub CommandButton1_Click()
Dim c As Range
With Sheet2.Columns("A:A")
Set c = .Find(100, LookIn:=xlValues)
Sheets("sheet1").Range("C1") = Sheets("sheet2").Cells(c.Row, 2)
End With
End Sub
你的代码中cells(c.row,2)没有指定是哪个表的,会引用你按钮所在的表的单元格了。
第3个回答  推荐于2017-09-21
Sheet1.Range("c1").Value = Cells(c.Row, 2)
改成
Sheet1.Range("c1").Value = c.offset(0,1)

或者改成:
Sheet1.Range("c1").Value =Sheet2.Cells(c.Row, 2)本回答被提问者采纳
第4个回答  2011-02-24
Private Sub CommandButton1_Click()
With Sheet2.Columns("A:A")
Set c = .Find(100, LookIn:=xlValues)
Sheet1.Range("c1").Value = .Cells(c.Row, 2)
End With
End Sub