Страницы: 1
RSS
Проставление галочки в нужной ячейке с последующим суммирование данных
 
Собственно сабж.
Есть документ эксель. Это таблица по примерному расчету стоимости услуги. В ней есть блоки работ и блоки материалов. В рамках этой таблицы учтены все возможные варианты их выполнения. Таким образом, чтобы по заданию заказчика получить исходную калькуляцию, необходимо выбрать те или иные ячейки.
Что нужно сделать:
1 - запретить сторонним пользователям вносить изменения в ячейки, кроме определенных.
2 - в некоторых ячейках этих таблиц должна быть возможность проставления галочек (собственно фиксация выбора заказчика)
3 - в итоговой калькуляции должны плюсоваться выбранные ячейки для определения стоимости.

PS: поиск мучал всяко разно. Ткните носом, если подобный вопрос здесь уже обсуждался.
 
Цитата
Blagodom пишет: Ткните носом
Без файла-примера:
1. Сюда
2. Это?
3. см. справку по СУММ()
Изменено: Sanja - 05.02.2015 15:10:47
Согласие есть продукт при полном непротивлении сторон
 
Смотрите тему "защита листа" "защита ячеек". А для суммирования можно использовать формулу "СуммЕсли()", предварительно выставив нужный знак в нужных строках, которые и надо просуммировать.
Если автоматизировать бардак, то получится автоматизированный бардак.
 
Без файла....
1. Запаролить лист а нужным пользователям сказать пароль (самое простое). Или в ВБА прописать имена компов тех пользователей, которые могут изменять, для остальных запаролить. (думаю это можно сделать в модуле Книга на открытие файла). А на закрытие файла пароль включать всегда.
2. Разработчик - вставить и вставляете галку, привязываете к ней ячейку (Истина - галка включена, ЛОжь - галка выключена)
3. формула  Суммесли
Без файла что есть что нужно, вряд ли подробнее можно что то описать.
 
Благодарю за информацию на данном этапе. Позже выложу файл. Он находится в процессе создания)
 
Цитата
Sanja пишет: 2. Это?
Второе помогло - большое спасибо)
Однако встала новая проблема -... один вопрос - одна тема [МОДЕРАТОР]
Изменено: Blagodom - 06.02.2015 18:39:50
 
Это ограничено количеством ячеек?
Ввелось определенное количество, а затем выпадает ошибка =(
https://cloud.mail.ru/public/066bdc6b8a81/%D0%91%D0%B5%D0%B7%D1%8B%D0%BC%D1%8F%­D0%BD%D0%BD%D1%8B%D0%B9.jpg
 
Цитата
Blagodom пишет: а затем выпадает ошибка
Макрос под себя доделывали? Покажите его. А лучше в файле-примере (Excel, до 100 Кб)
Согласие есть продукт при полном непротивлении сторон
 
Код
'Ставим флажок, если был одиночный щелчок по ячейке
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Cells.Count > 1 Then Exit Sub
        If Not Intersect(Target, Range("K8,K17,H19:H36,H38:H61,K75,K83,K88,K97,K115,K125,K165,H166:H168,K178,K191,K210,K229,K234,K239,K244,H245:H247,K249,K257,K290,H291:H293,K295,K303,K340,H341:H343,K345,K353,K370,K386,K402,H403:H405,K408,K417,K434,K443,K461,K469,K483,K491,K507,K515,K530,K545")) Is Nothing Then
            Application.EnableEvents = False
            Target.Font.Name = "Marlett"
            Target = "a"
            Application.EnableEvents = True
        End If
End Sub
 
'Снимаем флажок, если был двойной щелчок по ячейке
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Not Intersect(Target, Range("K8,K17,H19:H36,H38:H61,K75,K83,K88,K97,K115,K125,K165,H166:H168,K178,K191,K210,K229,K234,K239,K244,H245:H247,K249,K257,K290,H291:H293,K295,K303,K340,H341:H343,K345,K353,K370,K386,K402,H403:H405,K408,K417,K434,K443,K461,K469,K483,K491,K507,K515,K530,K545")) Is Nothing Then
        Application.EnableEvents = False
        Cancel = True
        Target.ClearContents
        Application.EnableEvents = True
    End If
End Sub


Вроде так?
Посмотрел я на это дело и назрел вопрос - а может причина в том, что в строчке с номерами ячеек надо ентер сделать и с новой строки начать?)
Изменено: Blagodom - 10.02.2015 14:21:42
 
Не тестил, но предположу, что где-то в строке перечисления диапазона адрес ячейки записан русскими буквами, а не латиницей.
Еще вариант: строка с адресами слишком длинная и Range её не принимает. Можно решить так:
Код
Dim rR As Range
Set rR = Range("k8,k17,h19:h36,h38:h61,k75,k83,k88,k97,k115,k125,k165,h166:h168,k178,k191,k210,k229,k234,k239,k244,h245:h247,k249,k257,k290")
Set rR = Union(rR, Range("h291:h293,k295,k303,k340,h341:h343,k345,k353,k370,k386,k402,h403:h405,k408,k417,k434,k443,k461,k469,k483,k491,k507,k515,k530,k545"))
If Not Intersect(Target, rR) Is Nothing Then
End If
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
Blagodom пишет: Ввелось определенное количество, а затем выпадает ошибка
Длина строки ссылки ("K8,K17,H19....) не может быть больше 255
 
Цитата
The_Prist пишет: где-то в строке перечисления диапазона адрес ячейки записан русскими буквами
Исключено. Это я проверил 2 раза. Можно ли перенести строку где указывается диапазон? Может быть ошибка из-за того, что строка слишком длинная. Попробую отпишусь сюда.
 
Цитата
Blagodom пишет: Можно ли перенести строку где указывается диапазон?
Я выше уже показал как.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Ещё вариант сокращения длины строки - разбить её на несколько:
Код
If Not Intersect(Target, Range(Здесь первая группа ячеек/диапзонов)
    'Действия
End If

If Not Intersect(Target, Range(Здесь вторая группа ячеек/диапзонов)
    'Те же действия
End If
 
Большое спасибо все получилось.
 
Данный макрос не работает при проставлении защиты листа?
Выдает ошибку следующего характера:
https://cloud.mail.ru/public/fad212b42a40/01.jpg
https://cloud.mail.ru/public/3445923540aa/1.jpg
PS: сори за файлообменник, но сюда эти изображения не входят
Изменено: Blagodom - 11.02.2015 17:31:48
 
Подскажите, господа форумчане. Как с этим бороться)
Страницы: 1
Читают тему
Наверх