Страницы: 1
RSS
Действия с ячейками внутри диапазона (Range)
 
Добрый день.
Нужно чтобы при изменении ячеек на листе внутри диапазона передавались данные в sql. Не получается ограничить действия диапазоном.
При перечислении ячеек все работает.
На даный момент реализовано ректально. Минус нынешней реализации, при изменении ячеек вне диапазона vba выдает ошибку.
Подскажите, пожалуйста, как правильно ограничить действия диапазоном.

Код
Private Sub Worksheet_Change(ByVal Target As Range)
...
 Select Case Target.Address
        Case [A1].Address: [A9] = Target.Value
        'Case Range("B7:G65").Address: Sql_insert paramId, Datetime, Target.Value 
         Case Else: Sql_insert paramId, Datetime, Target.Value
   End Select 
...
END SUB
Изменено: ncux199rus - 08.09.2015 12:26:15
 
Доброе время суток
Код
If Not Application.Intersect(Target, Range("B7:G65")) Is Nothing Then
Sql_insert paramId, Datetime, Target.Value
End If

Как то так, по видимому
Успехов.
 
Андрей VG, огромное спасибо.
 
Доброго времени суток.
Еще появились глупые вопросы. Данный диапазон необходимо очистить при открытии книги.
Очищаю:
Код
Private Sub workbook_open()
    Range("B9:G85").Value = "-"
End Sub
 
В обработку диапазона добавляю условие:
Код
If Not Application.Intersect(Target, Range("B9:G85")) Is Nothing Then
       If Target.Value <> "-" Then
              Sql_insert paramId, Datetime, Target.Value
       End If
 End If

При ручном внесении данных работает корректно. Но при открытии книги выдает ошибку о несовпадении типов в строке:
Код
If Target.Value <> "-" Then
Подскажите как исправить.
Изменено: ncux199rus - 15.09.2015 14:39:01
 
Вопрос не по теме.
 
Сделал так.
Код
If Not Application.Intersect(Target, Range("B7:G85")) Is Nothing Then
       If TypeName(Target.Value) = "Double" Then
              Sql_insert paramId, Datetime, Target.Value
       End If
   End If
Работает без ошибок.
Насколько это правильно?
 
ncux199rus, если Target состоит более чем из одной ячейки, то Target.Value - массив. Насколько правильно - зависит от задачи. Процедура Sql_insert будет вызвана, только если Target состоит из одной ячейки И в этой ячейке число.
Страницы: 1
Наверх