Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Запись формул в столбец по нажатию кнопки., Нужна помощь в оптимизации кода макросов.
 
Доброго времени суток форумчане! Опыта написания макросов крайне мало, по этому прошу помощи у Вас.
Имею простую задачу по записи формул в столбец по нажатию кнопки и блокированию повторного нажатия данной кнопки. С записью формул справился при помощи быдлокода, а вот с блокированием повторного нажатия не смог, да и вносить отдельный макрос на каждую кнопку не очень правильно, всего создано 63.кнопки (по 2 на каждый день месяца и 1 на запись изначальных формул в конце месяца).
Код
Sub zam02() 'первая запись в столбец
Range("h6:h178").FormulaLocal = "=СУММЕСЛИ('Остатки цеха ЗАМ'!E:E;B:B;'Остатки цеха ЗАМ'!F:F)++СУММЕСЛИ('Задание для обвалки'!A:A;B:B;'Задание для обвалки'!D:D)"
End Sub

Sub sgp02() 'вторая запись в столбец
Range("h6:h178").FormulaLocal = "=СУММЕСЛИ('Приходы на СГП'!E:E;B:B;'Приходы на СГП'!F:F)"
End Sub

Sub otchistka() ' сброс всех формул в конце месяца
' объявляем переменные
    Dim UserEntry As Variant
    Dim Msg As String
    Dim NextRow As Long
    Const Pass1 As Integer = 2563
    ' запрашиваем пароль
    Msg = "Введите пароль."
    Do  ' сверяем пароль
        UserEntry = InputBox(Msg)
        If UserEntry = "" Then Exit Sub
        If IsNumeric(UserEntry) Then
            If UserEntry = Pass1 Then Exit Do
        End If
        Msg = "НЕ ВЕРНЫЙ ПАРОЛЬ."
        Msg = Msg & vbNewLine
        Msg = Msg & "Введите пароль."
    Loop
Range("e6:e178").FormulaLocal = "=СУММЕСЛИ('план по убою'!A:A;B:B;'план по убою'!c:c)+СУММЕСЛИ('план на обвалку'!A:A;B:B;'план на обвалку'!d:d)"
Range("h6:h178").FormulaLocal = "=ЕСЛИ(ЕПУСТО(F4);СУММЕСЛИ('план по убою'!A:A;B:B;'план по убою'!E:E)+СУММЕСЛИ('план на обвалку'!A:A;B:B;'план на обвалку'!F:F)+СУММЕСЛИ('Задание для обвалки'!A:A;B:B;'Задание для обвалки'!E:E);F4)"
Range("k6:k178").FormulaLocal = "=СУММЕСЛИ('план по убою'!A:A;B:B;'план по убою'!e:e)+СУММЕСЛИ('план на обвалку'!A:A;B:B;'план на обвалку'!f:f)"
Range("n6:n178").FormulaLocal = "=СУММЕСЛИ('план по убою'!A:A;B:B;'план по убою'!f:f)+СУММЕСЛИ('план на обвалку'!A:A;B:B;'план на обвалку'!g:g)"
Range("q6:q178").FormulaLocal = "=СУММЕСЛИ('план по убою'!A:A;B:B;'план по убою'!g:g)+СУММЕСЛИ('план на обвалку'!A:A;B:B;'план на обвалку'!h:h)"
Range("t6:t178").FormulaLocal = "=СУММЕСЛИ('план по убою'!A:A;B:B;'план по убою'!h:h)+СУММЕСЛИ('план на обвалку'!A:A;B:B;'план на обвалку'!i:i)"
Range("w6:w178").FormulaLocal = "=СУММЕСЛИ('план по убою'!A:A;B:B;'план по убою'!i:i)+СУММЕСЛИ('план на обвалку'!A:A;B:B;'план на обвалку'!j:j)"
Range("z6:z178").FormulaLocal = "=СУММЕСЛИ('план по убою'!A:A;B:B;'план по убою'!j:j)+СУММЕСЛИ('план на обвалку'!A:A;B:B;'план на обвалку'!k:k)"
Range("ac6:ac178").FormulaLocal = "=СУММЕСЛИ('план по убою'!A:A;B:B;'план по убою'!k:k)+СУММЕСЛИ('план на обвалку'!A:A;B:B;'план на обвалку'!l:l)"
Range("af6:af178").FormulaLocal = "=СУММЕСЛИ('план по убою'!A:A;B:B;'план по убою'!l:l)+СУММЕСЛИ('план на обвалку'!A:A;B:B;'план на обвалку'!m:m)"
Range("ai6:ai178").FormulaLocal = "=СУММЕСЛИ('план по убою'!A:A;B:B;'план по убою'!m:m)+СУММЕСЛИ('план на обвалку'!A:A;B:B;'план на обвалку'!n:n)"
Range("al6:al178").FormulaLocal = "=СУММЕСЛИ('план по убою'!A:A;B:B;'план по убою'!n:n)+СУММЕСЛИ('план на обвалку'!A:A;B:B;'план на обвалку'!o:o)"
Range("ao6:ao178").FormulaLocal = "=СУММЕСЛИ('план по убою'!A:A;B:B;'план по убою'!o:o)+СУММЕСЛИ('план на обвалку'!A:A;B:B;'план на обвалку'!p:p)"
Range("ar6:ar178").FormulaLocal = "=СУММЕСЛИ('план по убою'!A:A;B:B;'план по убою'!p:p)+СУММЕСЛИ('план на обвалку'!A:A;B:B;'план на обвалку'!q:q)"
Range("au6:au178").FormulaLocal = "=СУММЕСЛИ('план по убою'!A:A;B:B;'план по убою'!q:q)+СУММЕСЛИ('план на обвалку'!A:A;B:B;'план на обвалку'!r:r)"
Range("ax6:ax178").FormulaLocal = "=СУММЕСЛИ('план по убою'!A:A;B:B;'план по убою'!r:r)+СУММЕСЛИ('план на обвалку'!A:A;B:B;'план на обвалку'!s:s)"
Range("ba6:ba178").FormulaLocal = "=СУММЕСЛИ('план по убою'!A:A;B:B;'план по убою'!s:s)+СУММЕСЛИ('план на обвалку'!A:A;B:B;'план на обвалку'!t:t)"
Range("bd6:bd178").FormulaLocal = "=СУММЕСЛИ('план по убою'!A:A;B:B;'план по убою'!t:t)+СУММЕСЛИ('план на обвалку'!A:A;B:B;'план на обвалку'!u:u)"
Range("bg6:bg178").FormulaLocal = "=СУММЕСЛИ('план по убою'!A:A;B:B;'план по убою'!u:u)+СУММЕСЛИ('план на обвалку'!A:A;B:B;'план на обвалку'!v:v)"
Range("bj6:bj178").FormulaLocal = "=СУММЕСЛИ('план по убою'!A:A;B:B;'план по убою'!v:v)+СУММЕСЛИ('план на обвалку'!A:A;B:B;'план на обвалку'!w:w)"
Range("bm6:bm178").FormulaLocal = "=СУММЕСЛИ('план по убою'!A:A;B:B;'план по убою'!w:w)+СУММЕСЛИ('план на обвалку'!A:A;B:B;'план на обвалку'!x:x)"
Range("bp6:bp178").FormulaLocal = "=СУММЕСЛИ('план по убою'!A:A;B:B;'план по убою'!x:x)+СУММЕСЛИ('план на обвалку'!A:A;B:B;'план на обвалку'!y:y)"
Range("bs6:bs178").FormulaLocal = "=СУММЕСЛИ('план по убою'!A:A;B:B;'план по убою'!y:y)+СУММЕСЛИ('план на обвалку'!A:A;B:B;'план на обвалку'!z:z)"
Range("bv6:bv178").FormulaLocal = "=СУММЕСЛИ('план по убою'!A:A;B:B;'план по убою'!z:z)+СУММЕСЛИ('план на обвалку'!A:A;B:B;'план на обвалку'!Aa:Aa)"
Range("by6:by178").FormulaLocal = "=СУММЕСЛИ('план по убою'!A:A;B:B;'план по убою'!AA:AA)+СУММЕСЛИ('план на обвалку'!A:A;B:B;'план на обвалку'!Ab:Ab)"
Range("cb6:cb178").FormulaLocal = "=СУММЕСЛИ('план по убою'!A:A;B:B;'план по убою'!AB:AB)+СУММЕСЛИ('план на обвалку'!A:A;B:B;'план на обвалку'!Ac:Ac)"
Range("ce6:ce178").FormulaLocal = "=СУММЕСЛИ('план по убою'!A:A;B:B;'план по убою'!AC:AC)+СУММЕСЛИ('план на обвалку'!A:A;B:B;'план на обвалку'!AD:AD)"
Range("ch6:ch178").FormulaLocal = "=СУММЕСЛИ('план по убою'!A:A;B:B;'план по убою'!AD:AD)+СУММЕСЛИ('план на обвалку'!A:A;B:B;'план на обвалку'!AE:AE)"
Range("ck6:ck178").FormulaLocal = "=СУММЕСЛИ('план по убою'!A:A;B:B;'план по убою'!AE:AE)+СУММЕСЛИ('план на обвалку'!A:A;B:B;'план на обвалку'!AF:AF)"
Range("cn6:cn178").FormulaLocal = "=СУММЕСЛИ('план по убою'!A:A;B:B;'план по убою'!AF:AF)+СУММЕСЛИ('план на обвалку'!A:A;B:B;'план на обвалку'!AG:AG)"
Range("cq6:cq178").FormulaLocal = "=СУММЕСЛИ('план по убою'!A:A;B:B;'план по убою'!AG:AG)+СУММЕСЛИ('план на обвалку'!A:A;B:B;'план на обвалку'!AH:AH)"
End Sub

Может есть решение по созданию одного макроса с последовательной записью в обозначенные столбцы?
Файл сильно урезан - по объёму не проходил.
Изменено: alone_mech - 06.08.2018 10:06:42
Не выводится необходимое сообщение при выполнении функции IF в макросе.
 
Доброго времени суток!
Столкнулся с проблемой. При выполнении макрос отрабатывает на ура, кроме ситуации, когда в ячейке есть данные. Вместо сообщения "ЭТА ЗАЯВКА ЗАПОЛНЕНА!!!" "Выберите другую заявку", выводится сообщение "Номер заявки". Подскажите, где я ошибся?
Код
Sub GetData2()
    'объявляем переменные
    Dim UserEntry As Variant
    Dim Msg As String
    Dim Entry1 As String, Entry2 As String, Entry3 As String, Entry4 As String
    Dim NextRow As Long
    Const Pass1 As Integer = 1125
    Const Pass2 As Integer = 1247
    'запрашиваем пароль
    Msg = "Введите пароль."
    Do  'сверяем пароль
        UserEntry = InputBox(Msg)
        If UserEntry = "" Then Exit Sub
        If IsNumeric(UserEntry) Then
            If UserEntry = Pass1 Or UserEntry = Pass2 Then Exit Do
        End If
        Msg = "Не верный пароль."
        Msg = Msg & vbNewLine
        Msg = Msg & "Введите пароль."
    Loop
       
  Do
    'запрос данных
    Entry1 = InputBox("Номер заявки")
    If Entry1 = "" Then Exit Sub
    NextRow = Entry1 + 2
    ' проверяем, пуста ли ячейка
    If IsEmpty(Cells(NextRow, 5)) = True Then Exit Do
    If Not IsEmpty(Cells(NextRow, 5)) Then
        Msg = "ЭТА ЗАЯВКА ЗАПОЛНЕНА!!!"
        Msg = Msg & vbNewLine
        Msg = Msg & "Выберите другую заявку."
        End If
    Loop
         
   Do
    Entry2 = InputBox("Опишите выполненные работы")
    If Entry2 = "" Then Exit Sub
    Entry3 = InputBox("Укажите исполнителя")
    If Entry3 = "" Then Exit Sub
    Entry4 = InputBox("Есть замечания?")
    If Entry4 = "" Then Exit Sub
'   запись данных
    
    Cells(NextRow, 5) = Entry2
    Cells(NextRow, 6) = Entry3
    Cells(NextRow, 8) = Entry4
    Exit Do
    Loop
End Sub
Изменено: alone_mech - 28.09.2017 16:29:34
Блокировка изменения ячейки после внесения данных.Ячейки с данными уже защищены паролем.
 
Добрый день! Столкнулся с проблемой при создании журнала регистрации заявок на нашем предприятии. Имеется производственный корпус со своими цехами, на каждый цех создан лист и установлена защита с доступом по паролю к ячейкам. У каждой службы свой пароль и диапазон, куда можно внести данные.
Вся загвоздка в том, чтобы запретить изменение уже внесённых данных после сохранения или закрытия документа.Пароль на защиту листа 0000.
Может быть я вообще не правильно построил форму отчёта?
Буду благодарен за помощь в решении данной задачи!
Изменено: alone_mech - 21.09.2017 13:49:15
Страницы: 1
Наверх