Vba 如何使用带范围的字符串格式的单元格地址?

Vba 如何使用带范围的字符串格式的单元格地址?,vba,excel,Vba,Excel,我想获取包含Nikunj的单元格和包含Deepak的单元格之间的非空单元格计数 子计数() 将txt1设置为字符串 将txt2设置为字符串 txt1=“Nikunj” txt2=“Deepak” 带工作表(1).范围(“b1:b20”) 设置a=.Find(txt1,LookIn:=xlValues) 集合b=.Find(txt2,LookIn:=xlValues) 以 arra=拆分(a.地址,“$”) arrb=拆分(b.地址,“$”) newa=Join(arra,“”) newb=连接

我想获取包含
Nikunj
的单元格和包含
Deepak
的单元格之间的非空单元格计数

子计数()
将txt1设置为字符串
将txt2设置为字符串
txt1=“Nikunj”
txt2=“Deepak”
带工作表(1).范围(“b1:b20”)
设置a=.Find(txt1,LookIn:=xlValues)
集合b=.Find(txt2,LookIn:=xlValues)
以
arra=拆分(a.地址,“$”)
arrb=拆分(b.地址,“$”)
newa=Join(arra,“”)
newb=连接(arrb,“”)
MsgBox工作表function.CountA(范围(“newa:newb”))
端接头
我有一个xlA1格式的单元格地址,作为newanewb中的字符串,我无法将其与
工作表function.CountA一起使用

如何将单元格地址从字符串转换为可接受为范围的格式?

您可以将
range(a,b)
传递到
CountA
,而无需解析单元格地址:

Option Explicit

Sub Count()

    Dim txt1 As String
    Dim txt2 As String
    Dim a As Range
    Dim b As Range

    txt1 = "Nikunj"
    txt2 = "Deepak"

    With Worksheets(1).Range("b1:b20")
        Set a = .Find(txt1, LookIn:=xlValues)
        Set b = .Find(txt2, LookIn:=xlValues)
    End With

    MsgBox WorksheetFunction.CountA(Range(a, b))

End Sub

您可以直接使用该地址:

Sub Count()
    Dim txt1 As String
    Dim txt2 As String
    Dim a As Range, b As Range

    txt1 = "Nikunj"
    txt2 = "Deepak"
    With Worksheets(1).Range("b1:b20")
        Set a = .Find(txt1, LookIn:=xlValues)
        Set b = .Find(txt2, LookIn:=xlValues)
    End With

    MsgBox WorksheetFunction.CountA(Range(a.Address & ":" & b.Address))
End Sub

您眼前的问题是
“newa:newb”
是一个字符串,实际上包含字符“newa:newb”,而不是变量
newa
newb
中存储的内容。要串联字符串变量,请使用
运算符:

newa & ":" & newb
然而,正如罗宾·麦肯齐(Robin Mackenzie)所指出的那样,这是没有必要的

MsgBox WorksheetFunction.CountA(Range(a, b))
我们也应该这样做


顺便说一句,
replace
函数是从字符串中删除字符的更简单的方法

newa = Replace(a.Address, "$", "")


编辑:建议您使用
选项Explicit

未请求,但使用不带VBA的选项:

=COUNTA(INDIRECT("B"&MATCH("Nikunj",B:B,0)&":B"&MATCH("Deepak",B:B,0)))

这比我的答案要好。谢谢@Robin Mackenzie。这对我来说非常有效。谢谢您的回答@Gary的学生,但在实际问题中,我无法硬编码地址。在我的代码中,地址是从FIND()派生出来的,但是Robin的方法是最好的!谢谢@arcadeprecinct。您建议的两种解决方案都非常有用。谢谢@pnuts。这可能对我的其他应用有所帮助。