簡體   English   中英

“對象”全局的方法“范圍”失敗

[英]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


不惜一切代價避免ActiveWorkbookActiveCell等是個好主意 - 如何避免在 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM