Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Ошибка runtime error 9 subscript out of range при работе с другой книгой
 
Добрый вечер знатоки. Простой макрос стал прерываться ошибка runtime error 9 subscript out of range, долго искал причину.. а оказалось дело в следующем. При открытии другой Книги, или работая в другой книге в момент когда запускаются макросы (2 шт.каждые 60сек) в Книге1 и вылетает error
Изменено: tgg - 16 Мар 2018 10:48:28
 
А где собственно вопрос?
С уважением,
Федор/Все_просто
 
На строке With Worksheets("Лист1") всё и происходит!
Что надо изменить в коде (?) для работы одновременно в разных Книгах EXCEL
Код
Sub ShowWatch()     
ThisWorkbook.Sheets(1).Range("F1").Value = Now - Date     
Application.OnTime Now + TimeSerial(0, 0, 60), "ShowWatch"     
Application.OnTime Now + TimeSerial(0, 0, 60), "Proverka" 
End Sub 

Private Sub "Proverka"() 
With Worksheets("Лист1")             
If [I2] = "a" Then                 
Exit Sub             
 End If             
If [J2] <> "Ok" Then                 
Exit Sub             
 End If 
OtpravkaPisma     
[I2] = "a"     
[G2] = [D139]     
[G2].Value = [G2].Value         
End With End Sub
Изменено: tgg - 31 Мар 2015 22:50:24
 
Начало второй процедуры:
Код
Private Sub Proverka()
With ThisWorkbook.Worksheets("Лист1")
  If .Range("I2") = "a" Then
Аналогично переделайте все квадратные скобки.
 
Вот в чём вопрос??
Пол часа полёт нормальный!
Спасибо огромное, все работает.
Но мучает вопрос, в чем косяк случился?
Изменено: tgg - 31 Мар 2015 22:50:35
 
1. Worksheets("Лист1")  - без указания принадлежности к книге, относится к активной в момент запуска макроса книге. Видимо, в ней нет листа Лист1.
2. Оператор With фактически не работает, т.к. нигде нет обращения к свойству или методу, начинающегося с точки.
3. [I2], т.е. Range("I2") - без указания листа, относится к активному в момент запуска макроса листу.
 
Еще раз огромное спасибо!!
 
tgg, два момента:
1. Свои коды оформляйте соответствующим тегом - посмотрите, как выглядит код у Казанского.
2. Не нужно цитировать всё подряд.
 
Доброго времени суток! Не прошло и полгода …. Я к Вам с поклоном и вопросом.
Макрос в модуле листа из этой темы (http://www.planetaexcel.ru/forum/?FID=8&PAGE_NAME=read&TID=30902), с той лишь разностью, что работает с диапазоном - If Not Intersect(ActiveCell, Range("E18:E27")) Is Nothing Then. Вот собственно сам макрос:
Код
Option Explicit 

Private Sub Worksheet_SelectionChange(ByVal Target As Range) 
    If Not Intersect(ActiveCell, Range("E18:E27")) Is Nothing Then 
        Call Module1.Spravka 
    End If 
End Sub 

Но старая песня, опять при открытии другой книги excel этот макрос зачем-то срабатывает и встаёт на 2 строке.
Подскажите пожалуйста, как его поправить!?!
Спасибо!
 
Когда открывается книга, то она становится активной, и поэтому Ваш диапазон Range("E18:E27") относится уже к ОТКРЫТОЙ книге.
There is no knowledge that is not power
 
Пробовались разные варианты, это первый вариант макроса, с указанием листа и принадлежности к книге. Но результат всегда был один и тот же.
 
Цитата
tgg написал: Пробовались разные варианты
Ну так покажите эти "разные" варианты.
There is no knowledge that is not power
 
Так они ведь не работают как надо!
 
Добрый день!
В макросах новичок, второй день разбираюсь.
Подскажите  пожалуйста.
Есть макрос который из одного файла переносит информацию в другой файл.
Другой файл называется "Система прогнозирования свободных остатков_пробный.xlsm"
Если этот файл открыт, то  данные переносятся, если файл закрыт, то данные не переносятся и выходит ошибка subscript out of range
Ниже макрос
Код
Dim sbor As Range

Sub PerenosSbor()
   Dim lStart As Long, lEnd As Long, lLastRow As Long

   Application.ScreenUpdating = False
   Application.EnableEvents = False

  Workbooks("Система прогнозирования свободных остатков_пробный.xlsm").Save

   Application.Wait (Now + TimeValue("0:00:3"))

   '1. Определение первой ячейки с данными в столбце "A".
   'After:=Cells(Rows.Count, "A") указывает, с какой ячейки начать поиск.
   'Если не указывать, то поиск ведётся с ячейки "A1" и первой просматриватся
   'ячейка "A2". Если данные уже есть в ячейке "A1", то результат
   'будет неправильным. Поэтому нужно указать ячейку, с которой начинается поиск.

   lStart = Columns("A").Find(What:="?", After:=Cells(1, "A"), _
       LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByColumns, _
       SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False).Row

   '2. Определение последней ячейки с данными в столбце "A".

   lEnd = Columns("A").Find(What:="?", LookIn:=xlValues, LookAt:=xlPart, _
       SearchOrder:=xlByColumns, SearchDirection:=xlPrevious, _
       MatchCase:=False, SearchFormat:=False).Row

   '3. Выделение диапазона с данными в столбце "A".

  Set sbor = Range("A" & lStart & ":G" & lEnd)

With Workbooks("Система прогнозирования свободных остатков_пробный.xlsm").Worksheets("1.СБОР")
lLastRow = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
On Error Resume Next
.ShowAllData
sbor.Copy
.Range("A" & lLastRow).PasteSpecial xlPasteValuesAndNumberFormats
End With

Workbooks("Система прогнозирования свободных остатков_пробный.xlsm").Save
   Application.ScreenUpdating = True
   Application.EnableEvents = True
End Sub
 
В чем ошибка???
На сколько я знаю  историю создания макроса, данный макрос так же  писал не профи)
 
Ведь естественно - если файл закрыт, то при попытке его сохранения должна быть ошибка.
 
Цитата
Rjn написал: В чем ошибка?
Вы же выше сами написали, что
Цитата
Rjn написал: Если этот файл открыт, то  данные переносятся, если файл закрыт, то данные не переносятся
Макрос написан именно так, что файл должен быть предварительно открыт
Согласие есть продукт при полном непротивлении сторон.
 
А где и как исправить макрос, что бы он работал при закрытом  файле?
 
1. Код в сообщении  следует оформлять кнопкой <...>
2. Не нужно форматировать шрифт мелким. Стандартный нормально смотрится.
Страницы: 1
Читают тему (гостей: 1)