Доброго времени суток форумчане! Опыта написания макросов крайне мало, по этому прошу помощи у Вас. Имею простую задачу по записи формул в столбец по нажатию кнопки и блокированию повторного нажатия данной кнопки. С записью формул справился при помощи быдлокода, а вот с блокированием повторного нажатия не смог, да и вносить отдельный макрос на каждую кнопку не очень правильно, всего создано 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
Может есть решение по созданию одного макроса с последовательной записью в обозначенные столбцы? Файл сильно урезан - по объёму не проходил.
Доброго времени суток! Столкнулся с проблемой. При выполнении макрос отрабатывает на ура, кроме ситуации, когда в ячейке есть данные. Вместо сообщения "ЭТА ЗАЯВКА ЗАПОЛНЕНА!!!" "Выберите другую заявку", выводится сообщение "Номер заявки". Подскажите, где я ошибся?
Код
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
Добрый день! Столкнулся с проблемой при создании журнала регистрации заявок на нашем предприятии. Имеется производственный корпус со своими цехами, на каждый цех создан лист и установлена защита с доступом по паролю к ячейкам. У каждой службы свой пароль и диапазон, куда можно внести данные. Вся загвоздка в том, чтобы запретить изменение уже внесённых данных после сохранения или закрытия документа.Пароль на защиту листа 0000. Может быть я вообще не правильно построил форму отчёта? Буду благодарен за помощь в решении данной задачи!