“对象”全局方法的“范围”失败

这曾经起作用,然后突然开始出现错误:

  

“对象”全局范围的方法“范围”失败

从以下行开始:

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
zhang374793162 回答:“对象”全局方法的“范围”失败

如评论中所述,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等-How to avoid using Select in Excel VBA是一个好主意。因此,请考虑:

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是一个公式,这样做会更好一些,因为它提高了可读性。

本文链接:https://www.f2er.com/3164428.html

大家都在问