Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.06.2013, 08:09   #1
iKlev4s
 
Регистрация: 22.05.2013
Сообщений: 7
По умолчанию Run-time error '13' (продолжение темы)

добрый день,

при попытке стереть данные из ячейки D7 появляется ошибка (Error 13.jpg) и файл перестает работать. Тоже самое происходит при попытке стереть данные из двух ячеек сразу C7 - C8. Если стирать данные из C7 и C8 в отдельности, все O.K. В чем ошибка? Спасибо

Код:
Private Sub Worksheet_Change(ByVal Target As Range)
  If Not Intersect(Target, [C7:C20, D7:D20]) Is Nothing Then
     Application.EnableEvents = False
     Target.Offset(, 2) = IIf(IsNumeric(Target), Target + Target.Offset(, 2), Target.Offset(, 2))
     Application.EnableEvents = True
  End If
End Sub
Изображения
Тип файла: jpg Error 13.JPG (161.1 Кб, 121 просмотров)
Вложения
Тип файла: zip Tablica_Offset.zip (10.4 Кб, 12 просмотров)

Последний раз редактировалось iKlev4s; 03.06.2013 в 08:14.
iKlev4s вне форума Ответить с цитированием
Старый 03.06.2013, 10:11   #2
Скрипт
Форумчанин
 
Регистрация: 24.12.2012
Сообщений: 776
По умолчанию

iKlev4s, методом "Пробы" (метод "Пробы" - это когда берёшь из кода фрагменты и отдельно анализируешь) выяснил, что является источником ошибки. Когда вы удаляете данные из нескольких ячеек, то переменная "Target" представляет собой не одну ячейку, а несколько, а прибавить число "1" к нескольким ячейкам сразу нельзя тем способом, который вы используете (в вашей ситуации ничего и не должно прибавляться, т.к. "IsNumeric(Target)" даст "False", но почему-то эта команда "Target + Target.Offset(, 2)" анализируется компьютером). В данном случае несколько ячеек можно рассматривать как VBA-массив:
Код:
Sub Procedure_1()
    
    'Создаём массив.
    Dim myArray(1 To 2) As Long
    
    'Пытаемся прибавить к массиву число "1".
    'Вывод результата в View - Immediate Window.
    Debug.Print myArray() + 1

End Sub
Вывод

Вам нужно внести изменения в ваш код.
Скрипт вне форума Ответить с цитированием
Старый 03.06.2013, 10:11   #3
Step_UA
Форумчанин
 
Аватар для Step_UA
 
Регистрация: 09.06.2011
Сообщений: 388
По умолчанию

Ошибка связана с тем, что для функции IIF вычисляются все значения независимо от значения условия ...
Код:
  If Not Intersect(Target, [C7:C20, D7:D20]) Is Nothing And IsNumeric(Target) Then
     Application.EnableEvents = False
     Target.Offset(, 2) = Target + Target.Offset(, 2)
     Application.EnableEvents = True
  End If
на неконкретные вопросы даю неконкретные ответы ...
Step_UA вне форума Ответить с цитированием
Старый 03.06.2013, 10:19   #4
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Код:
Target.Offset(, 2) = IIf(IsNumeric(Target), Target + Target.Offset(, 2), Target.Offset(, 2))
Замените на
Код:
If IsNumeric(Target) Then Target.Offset(, 2) = Target + Target.Offset(, 2)
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 03.06.2013, 14:02   #5
iKlev4s
 
Регистрация: 22.05.2013
Сообщений: 7
По умолчанию сумма одинаковых действий

спасибо всем, программа заработала без ошибок

И, если можно, еще один вопрос. Как переписать код, чтобы значения одинаковых действий суммировались в одну ячейку?
Вложения
Тип файла: zip Tablica_2.zip (12.4 Кб, 9 просмотров)

Последний раз редактировалось iKlev4s; 03.06.2013 в 14:06.
iKlev4s вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Run-time error '1004'. noskriptt Microsoft Office Excel 1 24.10.2012 10:22
Run-time error '5692' caute Microsoft Office Word 11 09.10.2011 20:45
Периодическая ошибка Run-time error -2147417848 (80010108) Automation error в файле с макросом faraviper Microsoft Office Excel 0 24.02.2011 16:23
Run-time error 13 olimpus Microsoft Office Excel 11 25.12.2010 22:49
Ошибка Run-Time error 13 DEZuv Microsoft Office Access 0 03.04.2009 12:25