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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.05.2013, 00:35   #1
iKlev4s
 
Регистрация: 22.05.2013
Сообщений: 7
По умолчанию

добрый день,

нужен небольшой совет. При вводе чисел в ячейки C7, C8 и D7 числа суммируются с предыдущим числами и сумма записывается в ячейки E7, E8 и F7 соответственно.

Для этого используется такой код
Код:
Private vData
 
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
    If Not Intersect(Target, [C7]) Is Nothing Then
       If IsNumeric([C7]) Then vData = [C7]
    End If
    If Not Intersect(Target, [C8]) Is Nothing Then
       If IsNumeric([C8]) Then vData = [C8]
    End If
    If Not Intersect(Target, [D7]) Is Nothing Then
       If IsNumeric([D7]) Then vData = [D7]
    End If
End Sub
 
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    If Not Intersect(Target, [C7]) Is Nothing Then
       Application.EnableEvents = False
       If IsNumeric([C7]) Then [E7] = [C7] + [E7]
       Application.EnableEvents = True
    End If
    If Not Intersect(Target, [C8]) Is Nothing Then
       Application.EnableEvents = False
       If IsNumeric([C8]) Then [E8] = [C8] + [E8]
       Application.EnableEvents = True
    End If
    If Not Intersect(Target, [D7]) Is Nothing Then
       Application.EnableEvents = False
       If IsNumeric([D7]) Then [F7] = [D7] + [F7]
       Application.EnableEvents = True
    End If
End Sub
(на основе кода http://www.programmersforum.ru/showthread.php?t=1203)

Вопрос - как дополнить код для действий Б, В, Г, Д и т.д.? Спасибо

P.S. MS Office 2010
Вложения
Тип файла: zip Tablica.zip (10.7 Кб, 5 просмотров)

Последний раз редактировалось iKlev4s; 23.05.2013 в 14:24.
iKlev4s вне форума Ответить с цитированием
Старый 23.05.2013, 09:30   #2
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Не мог понять - зачем vData? Пришлось сходить по ссылке...
Действительно незачем.
Ну а дополнить - думаю аналогично. Но файл не смотрел.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 23.05.2013, 09:57   #3
iKlev4s
 
Регистрация: 22.05.2013
Сообщений: 7
По умолчанию

т.е. эта часть кода вообще не нужна?

Код:
Private vData
 
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
    If Not Intersect(Target, [C7]) Is Nothing Then
       If IsNumeric([C7]) Then vData = [C7]
    End If
    If Not Intersect(Target, [C8]) Is Nothing Then
       If IsNumeric([C8]) Then vData = [C8]
    End If
    If Not Intersect(Target, [D7]) Is Nothing Then
       If IsNumeric([D7]) Then vData = [D7]
    End If
End Sub

Последний раз редактировалось iKlev4s; 23.05.2013 в 10:18.
iKlev4s вне форума Ответить с цитированием
Старый 23.05.2013, 10:29   #4
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Ну а где Вы используете эту переменную?
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 23.05.2013, 10:31   #5
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

а так разве не проще?
Код:
Private Sub Worksheet_Change(ByVal Target As Range)
  If Not Intersect(Target, [C7:C8, D7]) 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
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Старый 23.05.2013, 11:30   #6
iKlev4s
 
Регистрация: 22.05.2013
Сообщений: 7
По умолчанию Run-time error '13'

Цитата:
Сообщение от DiemonStar Посмотреть сообщение
а так разве не проще?
да, так гораздо проще, но при попытке стереть данные из ячейки 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 Кб, 137 просмотров)
Вложения
Тип файла: zip Tablica_Offset.zip (10.4 Кб, 16 просмотров)

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


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Повторная отправка формы. matrixphp PHP 5 04.11.2012 03:32
Просмотр UDP пакетов и повторная отправка grafgrial Работа с сетью в Delphi 9 25.07.2012 17:24
повторная установка демоверсии vadprint Софт 2 02.11.2010 09:10
Повторная авторизация Viteef Работа с сетью в Delphi 6 16.05.2009 09:58
Повторная установка??? Marsik Софт 8 06.05.2008 20:52