[英]Method 'Range' of 'object' Global Failed
這曾經有效,然后突然開始出現錯誤:
“對象”全局的方法“范圍”失敗
從以下開始:
Range("G2.G101").Value = "=E2-B2"
是什么賦予了?
Sub ReadCSV()
Dim symbol, hi, lo, startdate, enddate, hi2, lo2, hi3, lo3, d5hi, d5lo, d10hi, d10lo, d20hi, d20lo, dayrng As Variant
Dim symbpos As Range
Dim MainWkbk, NextWkbk As Workbook
Set MainWkbk = ActiveWorkbook
'symbol = InputBox("Enter symbol")
symbol = ActiveCell.EntireRow.Cells(1).Value
Workbooks.Open Filename:="f:\downloads\daily_" & symbol & ".csv"
Set NextWkbk = ActiveWorkbook
Range("G1").Value = "Net Ch fr Open"
Range("G2.G101").Value = "=E2-B2"
End Sub
如評論中所述, Range("G2.G101").Value = "=E2-B2"
應該是Range(G2:G101).Value
。 這很容易看到,如果使用宏記錄器,只是為了看看如何定義范圍 - 它在那里完美地工作。
無論如何,還有幾點:
當變量定義如下:
Dim MainWkbk, NextWkbk As Workbook
那么第一個( MainWkbk
)被定義為一個Variant
並且只有后者( NextWkbk
)作為一個工作簿。 因此,嘗試明確定義 - Dim MainWkbk as Workbook, NextWkbk As Workbook
。
不惜一切代價避免ActiveWorkbook
、 ActiveCell
等是個好主意 - 如何避免在 Excel VBA 中使用 Select 。 因此,考慮:
Set NextWkbk = Workbooks.Open( Filename:="f:\downloads\daily_" & symbol & ".csv")
避免Range()
沒有Worksheet
。 代替:
Range("G1").Value = "Net Ch fr Open"
Range("G2:G101").Value = "=E2-B2"
考慮:
With NextWkbk.Worksheets(1)
.Range("G1").Value = "Net Ch fr Open"
.Range("G2:G101").Formula = "=E2-B2"
End With
因為.
范圍之前指定打開的工作簿的第一個工作表的范圍。
將.Value
更改為.Formula
是最后一點,因為=E2-B2
是一個公式,這樣會更好一些,因為它提高了可讀性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.