首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >距离地址,我在哪里能找到这张纸?

距离地址,我在哪里能找到这张纸?
EN

Stack Overflow用户
提问于 2017-08-13 17:57:37
回答 3查看 553关注 0票数 0

我在UDF上工作,用户输入一个范围,比如"sheet1!A1:C8“。

在VBA中,我写了以下内容:

代码语言:javascript
运行
复制
Function RelativeSearch(Search, rng As Range, Row, Column)
    MsgBox rng.Address

在这里,msgbox只给我A1:C8。我怎样才能得到"Sheet1“呢?

我曾尝试将rng作为字符串,但这不起作用,因为我必须在代码的后面使用rng.find。

有人知道从靶场拿床单的方法吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-08-13 18:33:37

Range对象具有一个Worksheet属性,因此:

rng.Worksheet.Name会做你想做的事。

此外,Address属性有一个External参数,因此:

rng.Address(External:=True)产生整个范围地址,例如,[Book1]Sheet1!$D$28

票数 2
EN

Stack Overflow用户

发布于 2017-08-13 18:03:09

要获得对Sheet的引用,请使用rng.Parent。在您的具体情况下,您正在寻找rng.Parent.Name

所以你可以

代码语言:javascript
运行
复制
MsgBox rng.Parent.Name & "!" & rng.Address
票数 1
EN

Stack Overflow用户

发布于 2017-08-13 21:33:30

这不是你提出的问题的答案,但我怀疑它可能有助于你避免不得不问这个问题。

如果您试图在rng中查找作为Search传递的值,然后返回由RowColumn偏移量派生的值,则不需要知道工作表rng位于什么位置:

Excel公式(可能在单元格Sheet4!D6中):

代码语言:javascript
运行
复制
=RelativeSearch("b",Sheet1!A1:A6,3,2)

代码将在Sheet1中搜索范围A1:A6以求值"b“,然后从位于下面3行的单元格中返回值,向右返回2列:

代码语言:javascript
运行
复制
Function RelativeSearch(Search, rng As Range, Row, Column)
    Dim r As Range
    Set r = rng.Find(What:=Search, LookIn:=xlValues, LookAt:=xlWhole)
    If r Is Nothing Then
        RelativeSearch = CVErr(xlErrNA)
    Else
        RelativeSearch = r.Offset(Row, Column).Value
    End If
End Function

(如果您希望它与VLOOKUP的语法一致,则需要使用r.Offset(Row - 1, Column - 1)而不是r.Offset(Row, Column)。)

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

https://stackoverflow.com/questions/45663304

复制
相关文章

相似问题

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