Метод 'Range' of 'object' Global Failed - PullRequest
0 голосов
/ 04 ноября 2019

Раньше это работало, затем внезапно начали появляться ошибки:

Метод 'Range' объекта '' 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

1 Ответ

1 голос
/ 04 ноября 2019

Как уже упоминалось в комментариях, 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 и т. Д. - Как избежать использования Select в ExcelVBA . Таким образом, рассмотрим:

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 является формулой, и в этом случае она немного лучше, поскольку улучшает читабельность.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...