VBA怎样取到查找到的单元格位置

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VBA怎样取到查找到的单元格位置相关的知识,希望对你有一定的参考价值。

例如在A1:E10里面查找"abc"(每个单元格不重复,只有一个单元格里面有abc) 查找之后要取到这个单元格的位置,也就是行列,请教如何做到?

查找用Range对象的Find方法,返回Rang对象,然后再取Range对象的Row属性或Column属性返回行或列。Set C=Range("A1:E10").Find("abc"),If Not C Is Nothing then,R=C.Row '返回Cl=C.Column '返回列。

在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言。主要能用来扩展Windows的应用程序功能,特别是Microsoft Office软件。它也可说是一种应用程式视觉化的 Basic 脚本。

扩展资料:

调用函数/过程时,可以加括号或者不加括号。如果调用表达式作为一行的一部分,那么必须用参数,例如函数调用的返回值赋给变量。 调用过程时, 可以使用/不使用call关键字。使用call语句调用过程,如果无参数,则不加括号;如果有参数,必须加括号。

如果调用时用括号包住单个参数,则该参数强行按值传递。需要特别注意,不用call不加括号的调用,形参与实参是传值(passed by value)而不是传引用(passed by reference),这会导致一些对象的方法调用失败。由于微软Office软件的普及

人们常见的办公软件Office软件中的Word、Excel、Access、Powerpoint都可以利用VBA使这些软件的应用更高效率,例如:通过一段VBA代码,可以实现画面的切换;可以实现复杂逻辑的统计(比如从多个表中,自动生成按合同号来跟踪生产量、入库量、销售量、库存量的统计清单)等。 

掌握了VBA,可以发挥以下作用:

1、规范用户的操作,控制用户的操作行为;

2、操作界面人性化,方便用户的操作; 

3、多个步骤的手工操作通过执行VBA代码可以迅速的实现;

4、实现一些VB无法实现的功能;

5、用VBA制做EXCEL登录系统;

6、利用VBA可以Excel内轻松开发出功能强大的自动化程序。

参考资料来源:百度百科-VBA

参考技术A 查找用Range对象的Find方法,返回Rang对象,然后再取Range对象的Row属性或Column属性返回行或列。要注意的是Find方法可能会返回Nothing,要先检查一下,否则后出错。
例如:
Set
C=Range("A1:E10").Find("abc")
If
Not
C
Is
Nothing
then
R=C.Row
'返回行
Cl=C.Column
'返回列
end
if
或:
Set
C=Range("A1:E10").Find("abc")
If
Not
C
Is
Nothing
then
C.Select
R=Selection.Row
'返回行
Cl=Selection.Column
'返回列
end
if

VBA使用列中找到的格式查找并替换工作表中找到的所有单元格

【中文标题】VBA使用列中找到的格式查找并替换工作表中找到的所有单元格【英文标题】:VBA Find and replace all cells found in worksheet with format found in column 【发布时间】:2014-04-02 17:32:16 【问题描述】:

我正在寻找一个 vba 代码 sn-p 来帮助我入门。

我的一个工作表中有一个包含值(非唯一)的列。在本专栏中,我需要

    将整个工作簿中所有找到的具有相同值的单元格替换为原始单元格中找到的格式或

    如果单元格没有背景颜色,则为其分配新的唯一颜色背景(唯一是基于列中先前的单元格)并查找并替换整个工作簿中的所有单元格使用此格式。

我不相信我可以使用条件格式,因为我有太多符合条件的单元格,这会使 excel 速度降低到无法接受的速度。

【问题讨论】:

大多数人会问的第一件事是您是否尝试过任何东西。我看到的第一个问题是只能制作 1660 万个 RGB 组合。一个工作簿有更多的单元格,并且从 240、95、0 到 241、95、0 的颜色差异非常小,以至于它们可能是相同的颜色。根据第一列中的值数量和工作簿中使用的单元格数量,这可能需要一段时间才能运行。 感谢您的回复。一列是后面出现的工作表的图例的一部分。我不相信我会在图例列中有这么多不同的值。我可以遍历列并使用代码 sn-ps 来查找和替换,但我还没有弄清楚如何为 col 中的每个唯一条目创建新的唯一颜色。如果在宏中它可以运行很长时间。我只想成为触发函数调用的人,而不是一直以来的条件格式。 如果您的第一列没有唯一值,那么您如何知道要选择哪种背景颜色?例如,如果 A1 的值为 10 并且是橙色,但 A23 的值为 10 并且是粉红色。 你可以使用.Find来实现你想要的吗?看看THIS 是否有帮助 您尝试搜索多少个这样的值并更改单元格的背景颜色? 10? 20? 100? 【参考方案1】:

好吧,根据之前的 cmets,这是我目前所拥有的。

Sub FormatFill()
Dim sRng As Range
Dim cCell As Range
Dim nCell As Range
Dim bClr, lVal
     Application.ScreenUpdating = False
     Range("B1").Select
     Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
     Set sRng = Selection
     'Fill all legend formats
     Range("A1").Select
     Range(Selection, Selection.End(xlDown)).Select
     For Each cell In Selection
         lVal = cell.Value
         bClr = cell.Interior.Color
         Set cCell = sRng.Find(What:=lVal, LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows, _
         SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False)
         If Not cCell Is Nothing Then
             Set nCell = cCell
                 Do
                      cCell.Interior.Color = bClr
                      Set cCell = sRng.FindNext(After:=cCell)
                      If Not cCell Is Nothing Then
                            If cCell.Address = nCell.Address Then Exit Do
                      Else
                            Exit Do
                      End If
                 Loop
        End If
    Next
Application.ScreenUpdating = True
End Sub

我仍在研究如何为工作簿其余部分的其他值捕获和分配唯一颜色。

【讨论】:

以上是关于VBA怎样取到查找到的单元格位置的主要内容,如果未能解决你的问题,请参考以下文章

excel中怎样用vba使单元格在特定条件下才可以编辑?

从Range VBA查找最后一个单元格

excel vba如何查询某单元格所在行

VBA-在命名范围内查找第一个单元格的位置以引用电子表格的标题行

vba怎样把一个单元格中的值赋给另一个单元格

在EXCEL中 如何用VBA查找某特定单元格并返回该单元格的行和列值?