Excel ';方法';范围';对象的'_工作表';失败

Excel ';方法';范围';对象的'_工作表';失败,excel,vba,Excel,Vba,到现在为止,我从来没有遇到过这个问题。请看下面的代码,它位于工作簿中的模块上(不是工作表上的代码),当它试图设置范围时,代码会中断 Private Sub UpdateTickerList() Dim MyWS As Worksheet Dim a, b, c As Integer Dim NewStockRng As Range Dim RealTickFeed As Range 'On Error Resume Next (i took this ou

到现在为止,我从来没有遇到过这个问题。请看下面的代码,它位于工作簿中的模块上(不是工作表上的代码),当它试图设置范围时,代码会中断

Private Sub UpdateTickerList()
    Dim MyWS As Worksheet
    Dim a, b, c As Integer
    Dim NewStockRng As Range
    Dim RealTickFeed As Range
    'On Error Resume Next (i took this out to get the error)
    'initializes variables
    a = 0
    b = 0


    'defines the worksheet we are going to work on
    Set MyWS = Workbooks("Portfolio.xlsm").Worksheets("Feed")
    'finds last row
    b = MyWS.Range("a10000").End(xlUp).Row + 1
    'finds how large is the new stock universe
    a = 8 'UBound(NPSeCompran)

    'defines a new range in which to copy the new symbols
    Set NewStockRng = MyWS.Range(Cells(b, 1), Cells(b + a - 1, 1)) 'i need to 
    'use b+a-1 to reflect the fact that if i
    'have row97 as my first row and 11 elements then i need to count row 97 
    'as#1, otherwise i end up with one more row
    'copies the stocks to the range
    NewStockRng.value = Application.Transpose(NPSeCompran)

    'now sort the list
    Set RealTickFeed = MyWS.Range("a3").CurrentRegion
    RealTickFeed.Sort key1:=MyWS.Range("a3"), Header:=xlYes

    'now get rid of duplicates
    RealTickFeed.RemoveDuplicates Columns:=Array(1, 9), Header:=xlYes

    ErrorHandler:
End Sub

我会在
单元格()上添加

(可能还有其他问题)

编辑#1:

下面是一个简单的例子:

Sub qwerty()
    a = 12
    b = 15
    Sheets("Sheet2").Activate
    Set MyWS = Worksheets("Sheet1")

    Set NewStockRng = Range(MyWS.Cells(b, 1), MyWS.Cells(b + a - 1, 1))

    MsgBox NewStockRng.Address(o, o) & vbCrLf & NewStockRng.Parent.Name
End Sub

编辑#2:

关键问题是
Cells()
本身的范围已经很小了。因此:

Range(whatever.Cells(1,1), whatever.Cells(3,3))

是完全合格的。

btw,我现在把a=8放在现实中行的其余部分是好的
Set NewStockRng=MyWS.Range(MyWS.Cells(b,1),MyWS.Cells(b+a-1,1))
所有范围对象都需要指定父对象,或者内部范围对象可能引用不同的表,因此错误。隐式
ActiveSheet
引用再次出现!还有一个这样的问题,本来是可以避免的!非常感谢。我知道我错过了一些愚蠢的事情。难道你不想
MyWS.
Range(…
也?@ScottCraner如果你已经限定了
Cells(),你就不需要限定
Range()
in.。这不会产生相同的错误吗?该区域将查看活动工作表,而单元格正在查看另一个?@ScottCraner有关特定示例,请参阅我的编辑1。相关:
Range(whatever.Cells(1,1), whatever.Cells(3,3))