首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >动态命名范围的不准确输出

动态命名范围的不准确输出
EN

Stack Overflow用户
提问于 2018-03-10 10:10:21
回答 2查看 91关注 0票数 0

我使用完全相同的代码来命名两个工作簿中的动态范围。在将其实现到Workbook 111中的通用代码主体之前,我使用Workbook TestBook1测试代码。

守则是:

代码语言:javascript
运行
复制
    Dim HDaER As Worksheet
    Dim HDaERReturnLR As Long
    Dim HDaERReturnLC As Long
    Dim HDaERReturnsDNR As Range
    Dim HDaERReturns As String

    Set HDaER = Sheets("HistoricalDataandExcessReturns")

        With HDaER.Cells(108, 2).CurrentRegion
            HDaERReturnLR = .Find(What:="*", After:=HDaER.Cells(107, 1), _
            LookIn:=xlFormulas, LookAt:=xlPart, _
            SearchOrder:=xlByRows, SearchDirection:=xlPrevious).row

            HDaERReturnLC = .Find(What:="*", After:=HDaER.Cells(107, 1), _
            LookIn:=xlFormulas, LookAt:=xlPart, _
            SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column

    Set HDaERReturnsDNR = HDaER.Range(HDaER.Cells(108, 2), _
            HDaER.Cells(HDaERReturnLR, HDaERReturnLC))
        End With

        HDaER.Names.Add Name:="HDaERReturns", RefersTo:=HDaERReturnsDNR

        Range("HDaERReturns").Select

我在TestBook1中得到的输出是准确的:

和我在工作簿111中获得的输出是不准确的:

我做错什么了?

EN

Stack Overflow用户

发布于 2018-03-10 10:53:27

规范After:=HDaER.Cells(...)显示为起点..。在本例中,我使用了After:=HDaER.Cells(107, 1),但我在HDaER.Cells(105, 1)中使用了标头“波动性”,这意味着用行With HDaER.Cells(108, 2).CurrentRegion指定范围的起始单元格,并包括方向SearchDirection:=xlPrevious的另一个规范,导致将HDaER.Range(HDaER.Cells(108, 2), HDaER.Cells(105, 1))标记为要命名的动态范围。

具有精确输出的代码是:

代码语言:javascript
运行
复制
Dim HDaER As Worksheet
Dim HDaERReturnLR As Long
Dim HDaERReturnLC As Long
Dim HDaERReturnsDNR As Range
Dim HDaERReturns As String

Set HDaER = Sheets("HistoricalDataandExcessReturns")

With HDaER.Cells(108, 2).CurrentRegion
            HDaERReturnLR = .Find(What:="*", After:=HDaER.Cells(105, 1), _
            LookIn:=xlFormulas, LookAt:=xlPart, _
            SearchOrder:=xlByRows, SearchDirection:=xlPrevious).row

            HDaERReturnLC = .Find(What:="*", After:=HDaER.Cells(105, 1), _
            LookIn:=xlFormulas, LookAt:=xlPart, _
            SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column

    Set HDaERReturnsDNR = HDaER.Range(HDaER.Cells(108, 2), _
            HDaER.Cells(HDaERReturnLR, HDaERReturnLC))
        End With

        HDaER.Names.Add Name:="HDaERReturns", RefersTo:=HDaERReturnsDNR

        Range("HDaERReturns").Select

HDaER.Cell(105, 1) After:=HDaER.Cells(105, 1)**,作为起点的的将导致精确的** .Range 选择.

回答@DisplayName的评论和答复:

好主意,坏输出..。

MsgBox最后一行显示此结果:

MsgBox最后一列显示此结果:

代码输出(正如我先前回答的那样):

准确的代码输入:

票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49207839

复制
相关文章

相似问题

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