2014-09-19 78 views
-2

您好我有一个有效的范围对象,但我得到的对象所需错误检查,如果对象为空,但仍然得到错误

Dim row As Integer 
Dim col As Integer 
If Not rng Is Nothing Then 
    row = rng.row 
    col = rng.Column 
End If 

它进入,如果但(组行= rng.row)线得到错误

整个代码是这样的:

Dim str() As String 
str = GetArray(ActiveSheet.Range("A3")) 
Dim element As Variant 
Dim rng As Range 
Set rng = Range("D3") 
For Each element In str 
With ActiveSheet.QueryTables.Add(Connection:= _ 
    element, _ 
    Destination:=rng) 
    .Name = "technicals_1" 
    .FieldNames = True 
    .RowNumbers = False 
    .FillAdjacentFormulas = False 
    .PreserveFormatting = True 
    .RefreshOnFileOpen = False 
    .BackgroundQuery = True 
    .RefreshStyle = xlInsertDeleteCells 
    .SavePassword = False 
    .SaveData = True 
    .AdjustColumnWidth = True 
    .RefreshPeriod = 0 
    .WebSelectionType = xlAllTables 
    .WebFormatting = xlWebFormattingNone 
    .WebPreFormattedTextToColumns = True 
    .WebConsecutiveDelimitersAsOne = True 
    .WebSingleBlockTextImport = False 
    .WebDisableDateRecognition = False 
    .WebDisableRedirections = False 
    .Refresh BackgroundQuery:=False 
End With 
Range(Cells(rng.row, rng.Column), Cells(rng.row + 70, rng.Column + 1)).Select 
Selection.Copy 
rng.Offset(0, 2).Select 
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _ 
    False, transpose:=True 
Range(Cells(rng.row, rng.Column), Cells(rng.row + 70, rng.Column + 1)).Select 
Selection.QueryTable.Delete 
Selection.Delete Shift:=xlToLeft 
/* AFTER THIS LINE I GET OBJECT REQUIRED ERROR */ 
Range(Cells(rng.row, rng.Column), Cells(rng.row, rng.Column + 70)).Select 
Selection.Delete Shift:=xlUp 
Set rng = rng.Offset(1, 0) 
Next element 

End Sub 

我已经编辑它,请再读一遍 请阅读我输入此评论的部分:

/*此行后,我得到对象必需的错误*/

我该怎么办? 谢谢

+0

你刚刚删除了范围,所以你不能引用它。你知道这是D3,所以使用行号/列号。 – Rory 2014-09-19 12:59:32

+0

那么我应该怎么做才能避免 – 2014-09-19 13:01:54

+0

请帮我.. – 2014-09-19 13:12:47

回答

0

每次你删除范围你必须重新定义它。

最好不要使用范围变量,而是使用单元格属性和单元格D3的坐标(即单元格(3,4))。

因此,要解决您的问题,要么竟然放弃错误和行前插入

Set rng = Range("D3") 

再之后的下一个范围(...)。DELETE语句,或者不使用范围变量(自您只需使用对象的行和列属性),并将rng.Column和rng.Row替换为定义为正确的行和列编号的变量。

相关问题