Всем доброго дня, я с программированием не знаком попробовал сам определить проблему мне её выделило пробовал подбирал но увы без успешно.Искал на форуме но увы из за нехватки знаний не знаю с какой стороны копать. Код писал не я и не крал человек его выложил в свободный доступ. Теперь более конкретно. При попытке загрузить данные выдает ошибку [vba]
Код
DATE_VALUE(i) = Worksheets(WorksheetsNumber).Cells(i + 2, DateColumn).Value При смене региональных настроек на английский при русском вот так HIGH_VALUE(i) = Worksheets(WorksheetsNumber).Cells(i + 2, HighColumn).Value * PipsPointer В целом выглядет вот так 'Перенос значений котировок с листа в массивы ReDim HIGH_VALUE(FullCounter) ReDim LOW_VALUE(FullCounter) ReDim DATE_VALUE(FullCounter)
For i = 0 To (FullCounter - 1) HIGH_VALUE(i) = Worksheets(WorksheetsNumber).Cells(i + 2, HighColumn).Value * PipsPointer LOW_VALUE(i) = Worksheets(WorksheetsNumber).Cells(i + 2, LowColumn).Value * PipsPointer DATE_VALUE(i) = Worksheets(WorksheetsNumber).Cells(i + 2, DateColumn).Value Next
[/vba] Данные которые загружаются выглядят так [vba]
Кому не сложно посмотрите пожалуйста подскажите как вылечить или хоть отправьте в нужное место для поиска Если нужно скину файл с данными. У меня 2007 стоит Заранее благодарен
Всем доброго дня, я с программированием не знаком попробовал сам определить проблему мне её выделило пробовал подбирал но увы без успешно.Искал на форуме но увы из за нехватки знаний не знаю с какой стороны копать. Код писал не я и не крал человек его выложил в свободный доступ. Теперь более конкретно. При попытке загрузить данные выдает ошибку [vba]
Код
DATE_VALUE(i) = Worksheets(WorksheetsNumber).Cells(i + 2, DateColumn).Value При смене региональных настроек на английский при русском вот так HIGH_VALUE(i) = Worksheets(WorksheetsNumber).Cells(i + 2, HighColumn).Value * PipsPointer В целом выглядет вот так 'Перенос значений котировок с листа в массивы ReDim HIGH_VALUE(FullCounter) ReDim LOW_VALUE(FullCounter) ReDim DATE_VALUE(FullCounter)
For i = 0 To (FullCounter - 1) HIGH_VALUE(i) = Worksheets(WorksheetsNumber).Cells(i + 2, HighColumn).Value * PipsPointer LOW_VALUE(i) = Worksheets(WorksheetsNumber).Cells(i + 2, LowColumn).Value * PipsPointer DATE_VALUE(i) = Worksheets(WorksheetsNumber).Cells(i + 2, DateColumn).Value Next
[/vba] Данные которые загружаются выглядят так [vba]
Кому не сложно посмотрите пожалуйста подскажите как вылечить или хоть отправьте в нужное место для поиска Если нужно скину файл с данными. У меня 2007 стоит Заранее благодаренChifa
Добрый день! Естественно, файл с данными нужно прикладывать. Иначе, как проверять?
Исправил. Теперь, достаточно просто открыть MainBook.xlsm и нажать кнопку "Построить график", а остальные книги он откроет сам, а если их нет в том же каталоге, то создаст. Также, поставил "заглушку" (диалог с последующим завершением), если в книге котировок нет данных. (чтоб не вываливалась ошибка) А вообще, код настолько не оптимизирован, что проще написать все заново, чем его править...
[p.s.]Проверял на приложенном файле EURUSDM5.xlsx, который заполнил по аналогии с приведенным вами форматом, все работает. По крайней мере, ошибок не выдает
Добрый день! Естественно, файл с данными нужно прикладывать. Иначе, как проверять?
Исправил. Теперь, достаточно просто открыть MainBook.xlsm и нажать кнопку "Построить график", а остальные книги он откроет сам, а если их нет в том же каталоге, то создаст. Также, поставил "заглушку" (диалог с последующим завершением), если в книге котировок нет данных. (чтоб не вываливалась ошибка) А вообще, код настолько не оптимизирован, что проще написать все заново, чем его править...
[p.s.]Проверял на приложенном файле EURUSDM5.xlsx, который заполнил по аналогии с приведенным вами форматом, все работает. По крайней мере, ошибок не выдает KSV
Hugo, я сделал проще... Все Workbooks("MainBook.xlsm") заменил на ThisWorkbook. А зачем обращаться к текущей книге по имени? И дописал функцию, которая возвращает нужную книгу (по имени, указанному на листе настроек, не добавляя явного расширения файла, т.к нужно учитывать, что расширение может быть и старым - .xls), если она уже открыта, а если нет, то открывает ее, если файл книги уже есть, или создает новую книгу и сохраняет ее с указанным именем.
Hugo, я сделал проще... Все Workbooks("MainBook.xlsm") заменил на ThisWorkbook. А зачем обращаться к текущей книге по имени? И дописал функцию, которая возвращает нужную книгу (по имени, указанному на листе настроек, не добавляя явного расширения файла, т.к нужно учитывать, что расширение может быть и старым - .xls), если она уже открыта, а если нет, то открывает ее, если файл книги уже есть, или создает новую книгу и сохраняет ее с указанным именем.KSV
KSV, Hugo, Спасибо что откликнулись сейчас буду играться, если не сложно то в двух словах скажите в чем причина чтоб знать где начинать копаться в случае такого коллапса
KSV, Hugo, Спасибо что откликнулись сейчас буду играться, если не сложно то в двух словах скажите в чем причина чтоб знать где начинать копаться в случае такого коллапсаChifa
Лучше всегда дописывать расширение - т.к. с расширением сработает всегда, а без - только если соотв. настроена Windows (как я понял - у Вас она именно так и настроена ) А ещё лучше писать код как рассказал KSV - я тоже в своих кодах никогда не использую такой подход как в Вашем файле, я всегда использую объекты и объектные переменные.
Лучше всегда дописывать расширение - т.к. с расширением сработает всегда, а без - только если соотв. настроена Windows (как я понял - у Вас она именно так и настроена ) А ещё лучше писать код как рассказал KSV - я тоже в своих кодах никогда не использую такой подход как в Вашем файле, я всегда использую объекты и объектные переменные.Hugo
Причина чего? Причина возникновения ошибок - это неверно написанный код, даже если просто пользователь ввел не те данные, которые ожидались, или подсунул пустой лист котировок, неважно, все равно, правильно написанный код, должен учитывать возможность возникновения таких ситуаций, тем более, если этот код выкладывается как готовое решение... В вашем случае, первая ошибка с которой я столкнулся (и не только я - Hugo вам тоже об этом написал), это неверное обращение к книге по имени (без расширения) Дальнейшие ошибки обсуждать бессмысленно, т.к. код изначально написан "криво" - такое впечатление, что его записали макрорекордером, а потом чуть подправили
Причина чего? Причина возникновения ошибок - это неверно написанный код, даже если просто пользователь ввел не те данные, которые ожидались, или подсунул пустой лист котировок, неважно, все равно, правильно написанный код, должен учитывать возможность возникновения таких ситуаций, тем более, если этот код выкладывается как готовое решение... В вашем случае, первая ошибка с которой я столкнулся (и не только я - Hugo вам тоже об этом написал), это неверное обращение к книге по имени (без расширения) Дальнейшие ошибки обсуждать бессмысленно, т.к. код изначально написан "криво" - такое впечатление, что его записали макрорекордером, а потом чуть подправили
Chifa, так у вас данные должны грузиться из текстового файла? Я то вашу инструкцию не читал, просто посмотрел по коду, что ему нужно (а ему нужен был файл Excel), так и сделал Так, а если исходные данные в текстовом формате, то нафига заставлять пользователя конвертировать его в Excel, если это можно делать автоматом?!... [p.s.]Чуть позже напишу вам функцию.
Chifa, так у вас данные должны грузиться из текстового файла? Я то вашу инструкцию не читал, просто посмотрел по коду, что ему нужно (а ему нужен был файл Excel), так и сделал Так, а если исходные данные в текстовом формате, то нафига заставлять пользователя конвертировать его в Excel, если это можно делать автоматом?!... [p.s.]Чуть позже напишу вам функцию.KSV
Chifa, Кладите этот файл и файл котировок (EURUSDMonthly.prn) в одну папку (никакие другие файлы больше не нужны), открывайте этот файл и нажимайте кнопку "Построить график". Будет создан файл книги для графиков (на листе настроек его имя XOchartEURUSD, но можете поменять...) и сохранен в этом же каталоге, для дальнейшего использования. [p.s.]Пришлось вникать в код... До чего же гадко он написан... И еще... А для чего файл котировок сохранять в юникоде? (ведь в нем нет ни одного символа Unicode) Чтобы размер файла был вдвое больше? Или Есть и другие файлы котировок, которые тоже подсовуются этому MainBook?
Chifa, Кладите этот файл и файл котировок (EURUSDMonthly.prn) в одну папку (никакие другие файлы больше не нужны), открывайте этот файл и нажимайте кнопку "Построить график". Будет создан файл книги для графиков (на листе настроек его имя XOchartEURUSD, но можете поменять...) и сохранен в этом же каталоге, для дальнейшего использования. [p.s.]Пришлось вникать в код... До чего же гадко он написан... И еще... А для чего файл котировок сохранять в юникоде? (ведь в нем нет ни одного символа Unicode) Чтобы размер файла был вдвое больше? Или Есть и другие файлы котировок, которые тоже подсовуются этому MainBook?KSV