excel vba,查找某个单元格值所在的单元格

如表中,c2=abc。
运行vba后,弹出inputbox,输入abc,确定后,弹出一个msgbox:c2,并将activerange定位到c2。
如果整个表中,没有abc这个值,则msgbox:没有该值。

我能想到的关键词有:address,usedrange。
请高手帮忙。

第1个回答  2013-06-26
Sub Find_Fun()
Dim What As String
Dim n As Integer
What = InputBox("请输入查找内容", "查找功能")
n = 1
Do While n = 1
Set Rng = ActiveSheet.UsedRange.Find(What)
If Rng Is Nothing Then
MsgBox ("没有该值")
Else
MsgBox "查找值在:"&(Chr(64 + Rng.Column) & Rng.Row)
Rng.Select
n = n + 1
End If
Loop
End Sub追问

1、n =1,do while n =1,n=n+1,这里不明白为何加这个循环和这个n。我没用貌似也可以。
2、关于列位的事,我用商和余数的方法最多解决到ZZ列,有没有办法解决到XFD列,即最大列。
3、就是如查找的有多个,怎能逐步找全?就像excel本身的查找功能。

追答

    不加这个的话吗,如果有重复的,将出现死循环

    最大列是IV列,既然可以到ZZ,肯定可以到IV,没有XFD列

    可以逐步找全,应该有人问过类似的,你可以找找。

追问

1、试了一下确实是。但不明白用n=1,if n=1....n=n+1,end if 为何不能避免死循环,请仔细讲一下。我的理解是,你设n是1,当n是1时才做下面的,最后再把n设为2,就不会再循环了。那用if也应该同理啊。
2、我说的是office2007以上的。有三位字母列。
以第一问为主要的回答,第二问可能比较难了。谢谢。

追答

    你的理解是对的,但是你用的是什么循环?如果你要用IF条件判断的话,需要把IF条件加在循环里面,如果用的Do While循环,不加条件的话,就会循环下去,IF条件加进去也没用。

    哦,我的版本是2007的,没用过更高的版本,这个你再试试用MOD的方法看能否处理。

本回答被提问者和网友采纳
第2个回答  2013-06-26
excel自己不是有查找、定位的功能吗
相似回答