首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >引用单元格地址并将其存储在范围对象中。

引用单元格地址并将其存储在范围对象中。
EN

Stack Overflow用户
提问于 2018-12-21 21:26:11
回答 1查看 30关注 0票数 2

我正在迭代一列,并希望捕获符合我正在搜索的文本字符串的单元格。当我试图设置符合搜索范围对象的条件的单元格的地址时,就会出现问题。行: Set testRng = i.Range.Adress给出了错误“错误的参数数或无效的属性分配”,我不知道这里的问题是什么?

这是我正在使用的全部代码:

代码语言:javascript
复制
Sub Tester()

Dim rng As Range
Dim testRng As Range
Dim i As Variant
Dim cmpr As String
Dim usrInputA As String
usrInputA = InputBox("Col 1 Criteria: ")
Set rng = Range("A2:A10")
For Each i In rng
    cmpr = i.Value
    If InStr(cmpr, usrInputA) Then
        If testRng Is Nothing Then
           Set testRng = i.Range.Address
        Else
            Set testRng = testRng & "," & i.Range.Address
        End If
    Else
        MsgBox "No hit"
    End If
    Next
End Sub
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-21 21:29:17

  1. 您应该将i声明为Range (而不是Variant)
  2. 使用Union将单元格集合组合在一起,而不是自己手动构建字符串
  3. 切换范围设置的顺序。你只需要Set rngTest = i一次,所以我会把它放在底部,这样你就不用一直垃圾邮件了。
代码语言:javascript
复制
Option Explicit

Sub Tester()

Dim testRng As Range, i As Range
Dim usrInputA As String
Dim LR as Long

usrInputA = InputBox("Col 1 Criteria: ")
LR = Range("A" & Rows.Count).End(xlUp).Row

For Each i In Range("A2:A" & LR)
    If InStr(i, usrInputA) Then
        If Not testRng Is Nothing Then
           Set testRng = Union(testRng, i)
        Else
           Set testRng = i
        End If
    End If
Next i

If Not testRng is Nothing Then
    'Do what with testRng?
End If

End Sub
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53890949

复制
相关文章

相似问题

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