首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VBA如果工作表%1上的单元格与工作表%2列i中的单元格匹配,那么?

VBA如果工作表%1上的单元格与工作表%2列i中的单元格匹配,那么?
EN

Stack Overflow用户
提问于 2014-10-08 20:18:56
回答 4查看 14.9K关注 0票数 0

我正在尝试使用vba if语句来检查工作表1上的单元格H22是否与工作表2上的列i中的单元格匹配。

有人能告诉我哪里出问题了吗?谢谢

代码语言:javascript
复制
    If Range("H22").Value Like Worksheets("Sheet 2").Range("I1").Column Then

MsgBox "Match"

Else

MsgBox "No Match Found"

End If

它一直告诉我没有找到匹配项,所以我猜它在表2的列i中找不到匹配的单元格值

EN

回答 4

Stack Overflow用户

发布于 2014-10-08 20:32:02

代码的问题是,您正在将单个单元格与工作表2上的整个“i”列进行比较。您可以做的是使用查找来查看是否存在匹配值。如果是,则返回match。

这里有一些关于如何做到这一点的代码,我还将定义Range("H22").Value,这样您就可以确切地知道它来自哪里。

代码语言:javascript
复制
Option Explicit

Sub Macro()

Dim oWs As Worksheet
Dim rSearchRng As Range
Dim lEndNum As Long
Dim vFindVar As Variant



Set oWs = ActiveWorkbook.Worksheets("Sheet2")

lEndNum = oWs.Range("I1").End(xlDown).Row

Set rSearchRng = oWs.Range("I1:I" & CStr(lEndNum))

Set vFindVar = rSearchRng.Find(Range("H22").Value)

If Not vFindVar Is Nothing Then

    MsgBox "Match"

Else

    MsgBox "No Match Found"

End If

结束子对象

Here是关于find方法的文档。

票数 0
EN

Stack Overflow用户

发布于 2014-10-08 20:36:44

因为I列是第9列,所以Worksheets("Sheet 2").Range("I1").Column总是返回"9“。您正在将Range("H22")中的值与"9“进行比较。除非H22是"9“,否则你会得到"No Match Found”。

相反,请尝试使用range对象的.find方法或遍历列查找值。

票数 0
EN

Stack Overflow用户

发布于 2014-10-08 20:43:33

以下是尝试将单元格值与列中的值进行匹配的典型示例:

代码语言:javascript
复制
Sub james()
    Dim v As Variant, r As Range, rWhere As Range
    v = Sheets("Sheet1").Range("H22").Value
    Set rWhere = Sheets("Sheet2").Range("I:I")
    Set r = rWhere.Find(what:=v, After:=rWhere(1))
    If r Is Nothing Then
        MsgBox "No match found"
    Else
        MsgBox "Match found"
    End If
End Sub
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26256734

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档