2016-07-17 98 views
1

我試圖使用下面的代碼通過從另一個表中獲取數據來生成數據。我曾經用VBA做過類似的事情一段時間,直到現在還沒有遇到過這個問題。我已經通過相同的錯誤瞭解了其他幾個問題,但還沒有找到我需要的。對象'_Worksheet'的方法'範圍'失敗

我的代碼最初只有消息「400」崩潰,所以我加了一個錯誤處理程序,現在得到的消息:

Method對象「_Worksheet」的「範圍」失敗。

我的代碼(上表「買家」):

Public Sub MakeSheets(Optional ByVal SortSource As Boolean = False, Optional ByVal ExportSheets As Boolean = False) 

    On Error GoTo ErrorMsg 

    Dim r, n As Integer 'for looping through [r]ows and iterating [n]ew lines added to sheets 

    If SortSource Then 'This code never executes because I'm only using the default boolean values so far 
     Sheets("Buyers").UsedRange.Sort key1:=FullRange("NAME"), Header:=xlYes 
     Sheets("Properties").UsedRange.Sort key1:=Sheets("Properties").FullRange("STREET NAME"), key2:=Sheets("Properties").FullRange("NUMBER"), Header:=xlYes 
    End If 

    Sheets("Ownership").Rows("3:" & Sheets("Ownership").UsedRange.Rows.Count).Delete 
    n = 2 'last title row of target worksheet 
    With Sheets("Properties") 
    MsgBox .Cells(3, .FullRange("STREET NAME").Column).Value 'Successfully displays the appropriate cell value 
     For r = 2 To .PropertyRows() 
      If Not IsEmpty(.Cells(r, .FullRange("OWNER").Column).Value) Then 
       n = n + 1 
       MsgBox n 'displays "3", confirming this point is successfully reached once. 
       'Problem appears to be next line 
       Sheets("Ownership").Range("A" & n & ":L" & n).Value = Array(_ 
        .Cells(r, .FullRange("MLS#").Column).Value, _ 
        .Cells(r, .FullRange("LIST PRICE").Column).Value, _ 
        .Cells(r, .FullRange("NUMBER").Column).Value & " " & .Cells(r, .FullRange("STREET NAME").Column).Value, _ 
        .Cells(r, .FullRange("OWNER").Column).Value & " " & .Cells(r, .FullRange("OWNED").Column).Value, _ 
        .Cells(r, .FullRange("SUBDIVISION").Column).Value, _ 
        .Cells(r, .FullRange("COUNTY").Column).Value, _ 
        .Cells(r, .FullRange("BED").Column).Value, _ 
        .Cells(r, .FullRange("BATH").Column).Value, _ 
        .Cells(r, .FullRange("YEAR BUILT").Column).Value, _ 
        .Cells(r, .FullRange("TAXES").Column).Value, _ 
        .Cells(r, .FullRange("TAX YEAR").Column).Value, _ 
        .Cells(r, .FullRange("ACQUISITION DATE").Column).Value) 
      End If 
     Next r 
    End With 
    Exit Sub 

ErrorMsg: 
    MsgBox Err.Description 
End Sub 

我可以張貼FullRange的代碼,如果提出要求,但它調用幾個其他的自定義功能,而且我覺得MsgBox我扔在循環開始之前,巧妙地證明它不是問題。 (在「買家」和「屬性」上都有一個公共FullRange函數,每個函數都指向他們自己的工作表,這兩個工具都在其他地方被代碼中的其他代碼廣泛使用,沒有問題)。 With阻止在創造一些奇怪的衝突的情況下,但結果是相同的。

+0

如果您嘗試將某個固定陣列設置到該範圍內,會發生什麼情況?如果用某個常量替換'.FullRange'調用會發生什麼?即「Sheets(」Ownership「)。Range」還是數組中的問題?您也可以在該行設置一個斷點並在即時窗口中自行測試。 – arcadeprecinct

+0

@arcadeprecinct,我的通用測試'Sheets(「Ownership」)。Range(「A3:L3」)。Value = Array(1,2,3,4,5,6,7,8,9,10,11,12) 12)'完美地工作。當我在'FullRange'中設置一個斷點時,它會在前兩次達到,但不會在數組建立時達到。我認爲問題出在'Range'上。 – Josh

+1

嘗試把數組放入一個數組變量'Dim t()as variant'然後't = Array(...'然後在下一行停止你的代碼,看看是否填滿了。 –

回答

0

事實證明,在Excel或我的電腦的引擎下發生了一些魚腥味。在發佈之前,我已經退出並重新打開了Excel,但後來我開始出現一些古怪的行爲(例如宏從運行宏菜單中消失),所以我重新啓動了整個機器。我原來的代碼現在工作正常。謝謝你和我一起看。

相關問題