Страницы: Пред. 1 2 3 След.
RSS
Макрос: сумма/разница значений ячеек по условию
 
Не поломайте опять ))
 
Теперь ни как не " вывезу" , как  это все расписать на каждую неделю для одного сотрудника . С таким же подсчетом .
Изменено: БАТОНОВОЗ - 23.09.2019 19:35:39
 
Код
Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Cells.Count > 1 Then Exit Sub
    If Not Intersect(Target, Range("F11:BE11")) Is Nothing Then
        Application.EnableEvents = False
        Select Case Target
            Case Is = "Х", "X", "х", "x"
                Cells(Target.Row, 2) = Cells(Target.Row, 2) + Cells(23, Target.Column)
        Case Else
                Cells(Target.Row, 2) = Cells(Target.Row, 2) - Cells(23, Target.Column)
        End Select
    End If
    Application.EnableEvents = True
End Sub
 
Все работает Юрий. Спасибо БОЛЬШОЕ !!!
Упс. Но работает только для одного сотрудника.
Поменял строки в коде, и не хочет работать
If Not Intersect(Target, Range("F12:BE12")) Is Nothing Then
Понимаю что сделал что то не так, но не знаю что
Изменено: БАТОНОВОЗ - 23.09.2019 23:01:45
 
Цитата
БАТОНОВОЗ написал:
работает только для одного сотрудника.
Цитата
БАТОНОВОЗ написал:
как  это все расписать на каждую неделю для одного сотрудника
Это не Вы писали?
 
Цитата
Юрий М написал:
Это не Вы писали?
Думал стоки в коде поменяю и будет работать
 
Ну посмотрите внимательно на код (адрес диапазона): контролируется одна строка. Что нужно сделать, чтобы контролировать несколько строк? Правильно - указать нужный адрес..
Код
If Not Intersect(Target, Range("F11:BE21")) Is Nothing Then
 
Волшебник !!!!
Спасибо !!!
Работает !!!
да..., чайник я .. )

Спасибо большое !!!
 
Все хорошо, но , есть 3 момента .
1. При случайной ошибке , ставя в ячейку не Х , результат в столбце В уходит в минус .
2. Тоже самое и происходит , если по любой пустой ячейке , в пределах обозначенного диапазона , щелкнуть DEL.
3. Если применить к диапазону ОЧИСТИТЬ СОДЕРЖИМОЕ ,  то результаты из столбце В , не обнуляются .
Как это победить , ни как не " вывозу".
Пожалуйста.
 
Опять Вы про минус... Ну а если вычислением получается минус - что делать?
По пункту 3: в макросе есть строка If Target.Cells.Count > 1 Then Exit Sub Суть её в следующем: если изменения произошли сразу в нескольких ячейках, то выходим из процедуры (ничего не делаем).
 
Ничего не получается  
 
Вы же на вопрос не отвечаете - как Вам помочь?
 
Результат в столбце В , уходит в отрицательное число , если внести в диапазон заданных ячеек любой другой символ , кроме Х .
Щелкнув  Del на пустой ячейке в этом же диапазоне , тоже уходит в отрицательное значение .
И содержимое диапазона , не очищается если кликнуть ОЧИСТИТЬ СОДЕРЖИМОЕ .
Вот такие проблемы . )
 
Вернее будет  сказать , чтобы диапазон указанных ячеек , реагировал только на Х маленькие и большие русские и английские .
И не производил вычисление при нажатии Del  на пустой ячейке
Изменено: БАТОНОВОЗ - 29.09.2019 19:42:32
 
Цитата
БАТОНОВОЗ написал:
Если в ячейке А1 = "Х" , то значение ячейки А2 плюсуется к значению ячейки А3 . Иначе если ячейка А1 = " " то значение ячейки А2 минус от значения А3 .
Т.е. минусовать теперь не нужно?
 
Диапазон рабочих ячеек ,  которые обозначены в коде ,должен работать только  с X . На любые другие символы, не может быть ни каких вычислений.  Если X  ставим в F11 то F23 суммируется  к В11. Если  X удаляем из  F11 , то F23 минус от B11.  И ни  на какой другой символ , букву, цифру  вычисления не должны совершаться.
И так же не должно быть ни каких вычислений , если DEL  щелкнуть на пустую ячейку.
А с ОТЧИСТИТЬ СОДЕРЖИМОЕ  , я понял.
 
Проверьте вариант. Проверку при удалении (Delete) на наличие в ячейке других символов, кроме Хх (Ru и En), не делал.
 
Ставлю любой другой символ кроме Х , вычисление не производиться, но если его удалить Del  или стрелкой, то   вычисление производиться.
 
Цитата
Юрий М написал:
Проверку при удалении (Delete) на наличие в ячейке других символов, кроме Хх (Ru и En), не делал

Вот для кого это было написано?
 
Цитата
Юрий М написал:
Вот для кого это было написано?
Это мной понятно, но написал то как работает.
 
Я знаю, как работает ))
Добавьте проверку в процедуру Worksheet_SelectionChange. Справитесь?
 
Цитата
Юрий М написал:
Добавьте проверку в процедуру Worksheet_SelectionChange. Справитесь?
Думаю уже нет. Не совсем понятен мне код . До этого я еще не дорос )
 
Поменяйте вторую процедуру:
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Not Intersect(Target, Range("F11:BE21")) Is Nothing Then
'        If Target <> "" Then Flag = True
        Select Case Target
            Case Is = "Х", "X", "х", "x": Flag = True
        End Select
    End If
End Sub
 
Отлично. Все работает как нужно. Но ругается на эту строку Case Is = "Х", "X", "х", "x": Flag = True  , если пытаюсь выделить несколько ячеек
 
Цитата
БАТОНОВОЗ написал:
А с ОТЧИСТИТЬ СОДЕРЖИМОЕ  , я понял.
Значит не поняли: я же писал, что по одной ячейке.
 
Цитата
Юрий М написал:
Значит не поняли: я же писал, что по одной ячейке.
Нет нет, я понял, но ошибка вылетает уже при массовом  выделении  ячеек.   И это непонятно будет моему напарнику . если он захочет выделить все рабочие ячейки.  
Пусть нельзя будет их отчистить , но чтобы ошибка не вылетала. Чтобы не отправляла в код.
 
Невозможно вычислить значение конкретной ячейки и номера её сроки и столбца, если выделено НЕСКОЛЬКО ячеек.
Объясните напарнику, что нельзя выделять несколько ячеек - неужели он не запомнит это?
И на всякий случай сделайте так:
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Cells.Count > 1 Then Exit Sub 'Добавил
    If Not Intersect(Target, Range("F11:BE21")) Is Nothing Then
'        If Target <> "" Then Flag = True
        Select Case Target
            Case Is = "Х", "X", "х", "x": Flag = True
        End Select
    End If
End Sub
 
Хорошо. выделение теперь не выдает ошибку. Но DEL и стрелка теперь снова дают минусы в пустые ячейки.
Может все назад вернуть ?
 
Я ничего не менял, чтобы возвращать: только добавил проверку на количество выделенных ячеек. А про стрелку вообще не понял.
Проверил DEL на пустой ячейке - данные не минусуются. На ячейке с любым другим символом (кроме х) - аналогично.
Скоро пойдёт третья страница...
 
Цитата
Юрий М написал:
Проверил DEL на пустой ячейке - данные не минусуются.
В11 пусто, ставлю курсор на F 11 , щелкаю  DEL или стрелку (т..е. стереть) , а В 11  отрицательное число.
Страницы: Пред. 1 2 3 След.
Наверх