我試圖使用下面的代碼通過從另一個表中獲取數據來生成數據。我曾經用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
阻止在創造一些奇怪的衝突的情況下,但結果是相同的。
如果您嘗試將某個固定陣列設置到該範圍內,會發生什麼情況?如果用某個常量替換'.FullRange'調用會發生什麼?即「Sheets(」Ownership「)。Range」還是數組中的問題?您也可以在該行設置一個斷點並在即時窗口中自行測試。 – arcadeprecinct
@arcadeprecinct,我的通用測試'Sheets(「Ownership」)。Range(「A3:L3」)。Value = Array(1,2,3,4,5,6,7,8,9,10,11,12) 12)'完美地工作。當我在'FullRange'中設置一個斷點時,它會在前兩次達到,但不會在數組建立時達到。我認爲問題出在'Range'上。 – Josh
嘗試把數組放入一個數組變量'Dim t()as variant'然後't = Array(...'然後在下一行停止你的代碼,看看是否填滿了。 –