Страницы: 1
RSS
Объеденить VBA скрипты: формирование выпадающего списка и суммирование
 
1 Скрипт делает выпадающий список в ячейке
Код
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Not Intersect(Target, Range("C2:C5")) Is Nothing And Target.Cells.Count = 1 Then
Application.EnableEvents = False
newVal = Target
Application.Undo
oldval = Target
If Len(oldval) <> 0 And oldval <> newVal Then
Target = Target & "," & newVal
Else
Target = newVal
End If
If Len(newVal) = 0 Then Target.ClearContents
Application.EnableEvents = True
End If
End Sub

2 Скрипт - складывает значение в одной ячейке
Код
Private vData

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
If Target.Count > 1 Then Exit Sub
If Not Intersect(Target, [H5:H100]) Is Nothing Then
If IsNumeric(Target) Then vData = Target
End If
End Sub

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Not Intersect(Target, [H5:H100]) Is Nothing Then
Application.EnableEvents = False
If Target.Count = 1 And IsNumeric(Target(1)) Then
Target = Target + vData
Else
Application.Undo
End If
Application.EnableEvents = True
End If
End Sub


Необходимо совместить оба скрипта, чтобы они могли работать на одном листе.  Действие сриптов распространяются только на столбы H и C
Огромное спасибо уважаемые программисты
Изменено: bbt_26 - 24.08.2017 01:15:54
 
Цитата
bbt_26 написал:
Скрипт делает выпадающий список в ячейке
- наглая ложь! Не делает.
Оформляйте код тегами, кнопка <...> на панели редактирования.
И пример в файле не помешает.
Я сам - дурнее всякого примера! ...
 
1 Скрипт отображает выбираемые значение в одной ячейке и разделяет их запятыми -- я выбираю услуги, в другой ячейке в зависимости от услуги выводиться цена. 2 Срипт должен складывать цены, если выбрано больше 2-х услуг
 
bbt_26, теоретически (без файла-примера) - так:
Код
Private vData

Private Sub Worksheet_Change(ByVal Target As Range)
    On Error Resume Next
    If Not Intersect(Target, [H5:H100]) Is Nothing Then
        Application.EnableEvents = False
        If Target.Count = 1 And IsNumeric(Target(1)) Then
            Target = Target + vData
        Else
            Application.Undo
        End If
        Application.EnableEvents = True
    ElseIf Not Intersect(Target, Range("C2:C5")) Is Nothing And Target.Cells.Count = 1 Then
        Application.EnableEvents = False
        newVal = Target
        Application.Undo
        oldval = Target
        If Len(oldval) <> 0 And oldval <> newVal Then
            Target = Target & "," & newVal
        Else
            Target = newVal
        End If
        If Len(newVal) = 0 Then Target.ClearContents
        Application.EnableEvents = True
    End If
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
    If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, [H5:H100]) Is Nothing Then
        If IsNumeric(Target) Then vData = Target
    End If
End Sub
In GoTo we trust
 
Пишет недопустимая процедура (
 
Цитата
kuklp написал:
наглая ложь!
Я тоже не вижу в коде создание выпадающего списка )
 
Парни ))) Ну чё вы )))
 
bbt_26,
Цитата
Пишет недопустимая процедура (
это у меня компьютер глючит или у Вас все отступы заменились на буквы К?
In GoTo we trust
 
У меня нормально, без K
 
Я не селён в VBA - хотел промолчать но скажу, может дело в строке      
Код
If Not Intersect(Target, [E5:E100]) Is Nothing Then

Ошибку вот такую выдает
Цитата
Ошибка компиляции:
Недопустимая внешняя процедура
(Лист3 1:0)
 
tolstak, а откуда "К" взялись - после копирования-вставки?
 
Юрий М, вот и я не понял... Так открылся файл из #5
Изменено: tolstak - 24.08.2017 00:20:32
In GoTo we trust
 
Прав ) Теперь всё норм, но не считает почему то, посмотри, пожалуйста
 
bbt_26, ну я даже не знаю.... В ячейках С5:С7 значения добавляются через запятую, в столбце Е цена увеличивается при изменении с наведением...
Разве что (в порядке гадания) макросы не включены?
In GoTo we trust
 
Я объясню, при добавлении услуги, цена должна увеличиваться в поле Цена, а там сейчас НЕизвестная услуга. Я добавляю услугу, цена 300, добавляю ещё одну ценой в 400, в ячейки "Цена" теперь должно быть 700
 
Кросс:
http://www.programmersforum.ru/showthread.php?t=311802
Я сам - дурнее всякого примера! ...
Страницы: 1
Наверх