我使用完全相同的代码命名两个工作簿中的动态范围。在将代码实现到Workbook 111中的通用代码主体之前,我使用Workbook TestBook1来测试代码。
代码是:
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
我做错了什么?
答案 0 :(得分:1)
您的整个代码可能会崩溃到以下
With Sheets("HistoricalDataandExcessReturns").Cells(107, 1)
With .Parent.Range(.End(xlDown), .End(xlToRight))
.Parent.Names.Add name:="HDaERReturns", RefersTo:=.Resize(.Rows.Count - 1, .Columns.Count - 1).Offset(1, 1)
End With
.Range("HDaERReturns").Select
End With
答案 1 :(得分:0)
规范After:=HDaER.Cells(...)
显示为起点......在这种情况下,我使用了After:=HDaER.Cells(107, 1)
,但我在HDaER.Cells(105, 1)
中有标题“Volatility”,这意味着为行With HDaER.Cells(108, 2).CurrentRegion
指定范围的起始单元格并包含方向SearchDirection:=xlPrevious
的另一个规范会导致将HDaER.Range(HDaER.Cells(108, 2), HDaER.Cells(105, 1))
标记为要命名的动态范围。
具有准确输出的代码是:
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
Last Row显示以下结果:
MsgBox
最后一列显示以下结果:
代码输出(正如我之前所回答的):
确切的代码输入: