Sub ЧВ()
CarryOn = MsgBox("Выполнить?", vbYesNo, "Message from Excel")
If CarryOn = vbYes Then
ActiveSheet.Unprotect "password"
Cells(ActiveCell.Row, "F") = Date 'в столбец С активной строки ставим дату
Cells(ActiveCell.Row, "T").ClearContents 'очищаем столбец F активной строки
With Selection.Interior
Cells(ActiveCell.Row, "T").Pattern = xlSolid
Cells(ActiveCell.Row, "T").PatternColorIndex = xlAutomatic
Cells(ActiveCell.Row, "T").ThemeColor = xlThemeColorAccent6
Cells(ActiveCell.Row, "T").TintAndShade = 0.399975585192419
.PatternTintAndShade = 0
End With
ActiveSheet.Protect "password"
End If
End Sub
Подскажите - что не так? через запись макроса сделал, скопировал, добавил - ошибку выдаёт в пределах With. Хочу чтобы подкрашивалась ячейка при выполнении макроса
Спасибо - работает) Подскажите пожалуйста вот это что значит? if .column > 4 then
И ещё вопросик (чуть по другому). Как сделать, чтобы неважно какая ячейка в строке выделена - макрос выполнялся только к определённым столбикам. как объяснить - не знаю, может, чтобы отсчёт (куда вставить дату и какую ячейку очистить) шёл от первого столбика...
например пользователь выделит не ту ячейку от которой начнётся отсчёт (0;-5);(0;-2) и дата с удалением зайдут не в ту ячейку...
Добрый день знатокам программирования. Будьте добры - помогите с макросом.
Макрос будет включаться с кнопки. Нужно чтобы он начал действие от выделенной пользователем ячейки. Действия: 1. Снять защиту листа с паролем. 2. Ушёл на 5 ячеек влево (от выделенной перед началом макроса ячейки) и поставил там сегодняшнюю дату. 3. Ушёл на 2 ячейки влево (от выделенной перед началом макроса ячейки) и удалил там значение (если оно там имеется) 4. Поставил защиту листа обратно.
Resize(1,19) А можете расшифровать, что значит 1, а что 19. А то я не понимаю)
вот например по моему макросу. изменяется ячейка, от неё вправо на 13 вставляется дата, вправо на 16 время. потом от времени надо влево 4 ячейки заблокировать, пятую не надо, и от шестой до столбика А (т.е. до первой ячейки в строке)
со следующими строками так же. изменили - строка заблокировалась (кроме одной ячейки) и т.д.
Дабы не плодить... Здесь же спрошу... Подскажите пожалуйста, какой командой укоротить макрос на блокирование ячеек... Чтоб вот так как у меня не писать каждую ячейку отдельно, а диапазоном может... Интересует именно строчный диапазон и именно влево от изменяемой ячейки..
Код
Private Sub Worksheet_Change(ByVal Target As Range)
For Each cell In Target
If Not Intersect(cell, Range("U:U")) Is Nothing Then
With cell.Offset(0, 13)
.Value = Date
End With
With cell.Offset(0, 16)
.Value = Time
.Offset(0, -4).Locked = True
.Offset(0, -5).Locked = True
.Offset(0, -6).Locked = True
.Offset(0, -7).Locked = True
.Offset(0, -8).Locked = True
.Offset(0, -10).Locked = True
.Offset(0, -11).Locked = True
.Offset(0, -12).Locked = True
.Offset(0, -13).Locked = True
.Offset(0, -14).Locked = True
.Offset(0, -15).Locked = True
.Offset(0, -16).Locked = True
.Offset(0, -17).Locked = True
.Offset(0, -18).Locked = True
.Offset(0, -19).Locked = True
.Offset(0, -20).Locked = True
.Offset(0, -21).Locked = True
.Offset(0, -22).Locked = True
.Offset(0, -23).Locked = True
ActiveSheet.EnableOutlining = True
End With
ActiveSheet.EnableOutlining = True
DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowFormattingCells:=True
End If
Next cell
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
Application.EnableEvents = False
On Error Resume Next
For Each cell In Target
With cell
If Not Intersect(cell, Range("AE:AE")) Is Nothing Then
Me.Unprotect Password:="лфкфе1708159357"
.Offset(0, -1).Value = Now
Me.Protect Password:="лфкфе1708159357", DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowFormattingCells:=True
ElseIf Not Intersect(cell, Range("AF:AF")) Is Nothing Then
Me.Unprotect Password:="лфкфе1708159357"
.Offset(0, -11).Value = Date
.Offset(0, -20).Value = Date + 30
.Offset(0, -22).Value = .Offset(0, -7).Value
.Locked = True
Me.Protect Password:="лфкфе1708159357", DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowFormattingCells:=True
ElseIf Not Intersect(Target, Range("Y:Y")) Is Nothing Then
Me.Unprotect Password:="лфкфе1708159357"
Target.Offset(0, -17) = Target
.Offset(0, -18).Value = Now
Me.Protect Password:="лфкфе1708159357", DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowFormattingCells:=True
ElseIf Not Intersect(Target, Range("AI:AI")) Is Nothing Then
Me.Unprotect Password:="лфкфе1708159357"
.Offset(0, 1).Value = Now
Me.Protect Password:="лфкфе1708159357", DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowFormattingCells:=True
End If
End With
Next
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
Помогите пожалуйста поправить макрос, сейчас при изменении значения в диапазоне "Y:Y" в ячейку (0,-17) вставляется то что туда вводят, а в ячейку (0,-18) - дата и время изменения.
Но при удалении значения из ячейки "Y:Y", мой макрос так же удаляет в ячейке (0,-17) значение которое там было. Вот нужно сделать так, чтобы именно при удалении он не трогал ячейку (0,-17). Дату изменения (0,-18) пусть вставляет, а значение в ячейке (0,-17) нужно оставить, которое было до удаления.
Вот макрос на той странице - на которую копирую часть строки. Макрос защищает от редактирования нужные ячейки после того как их туда скопируют, что добавить чтобы не копировалось условное форматирование?
Ах да... На этом листе тоже есть свои правила усл.форматирования... Надо чтобы они не удалились при этом
В общем, если можно конечно, чтобы формат копируемых ячеек сохранился, а правила нет
Код
Private Sub Worksheet_Change(ByVal Target As Range)
For Each cell In Target
If Not Intersect(cell, Range("U:U")) Is Nothing Then
ActiveSheet.Unprotect Password:="123456"
With cell.Offset(0, 11)
.Value = Date
.Offset(0, -2).Locked = True
.Offset(0, -3).Locked = True
.Offset(0, -4).Locked = True
.Offset(0, -5).Locked = True
.Offset(0, -6).Locked = True
.Offset(0, -7).Locked = True
.Offset(0, -8).Locked = True
.Offset(0, -9).Locked = True
.Offset(0, -10).Locked = True
ActiveSheet.EnableOutlining = True
End With
ActiveSheet.EnableOutlining = True
ActiveSheet.Protect Password:="123456", DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowFormattingCells:=True
End If
Next cell
End Sub
Здравствуйте. Подскажите пожалуйста, как сделать чтобы правила условного форматирования при копировании данных с другого листа не копировались вместе с данными... Не знаю понятно или нет... Скажем есть лист с данными в n-столбов, в каждом столбце свои правила форматирования. При копировании строки например в другой лист - вместе со строкой копируются все правила. Как сделать чтобы форматирование не копировалось... А еще лучше, чтобы сам формат копировался в ячейках а правила нет)
P.S. страницы в макросах, когда копирую на другой лист 100% срабатывает макрос, поэтому параметры вставки не канают
Здравствуйте. Подскажите пожалуйста, как сделать чтобы правила условного форматирования при копировании данных с другого листа не копировались вместе с данными... Не знаю понятно или нет... Скажем есть лист с данными в n-столбов, в каждом столбце свои правила форматирования. При копировании строки например в другой лист - вместе со строкой копируются все правила. Как сделать чтобы форматирование не копировалось... А еще лучше, чтобы сам формат копировался в ячейках а правила нет)
P.S. страницы в макросах, когда копирую на другой лист 100% срабатывает макрос, поэтому параметры вставки не канают
Попробовал, не совсем то, при вставке вставляется, но и при удалении вставляется дата в (0,1) надо чтобы только при вводе вставлялось в (0,1) а при удалении только (0,2) можно так?
Здравствуйте, форумчане. Подскажите пожалуйста как сделать... http://www.planetaexcel.ru/techniques/6/44/ Как в этом макросе сделать так, чтобы при вводе значения в ячейку дата вставлялась в одну ячейку (как например в этом макросе - в следующую справа), а при удалении значения из этой же ячйеки (del) в другую. (например через одну вправо).
Код
Private Sub Worksheet_Change(ByVal Target As Range)
For Each cell In Target 'проходим по всем измененным ячейкам
If Not Intersect(cell, Range("A2:A100")) Is Nothing Then 'если изменененная ячейка попадает в диапазон A2:A100
With cell.Offset(0, 1) 'вводим в соседнюю справа ячейку дату
.Value = Now
.EntireColumn.AutoFit 'выполняем автоподбор ширины для столбца B, чтобы дата умещалась в ячейке
End With
End If
Next cell
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
Application.EnableEvents = False
On Error Resume Next
For Each cell In Target
With cell
If Not Intersect(cell, Range("P:P")) Is Nothing Then
Me.Unprotect Password:="êàðàò1708159357"
.Offset(0, -1).Value = Now
Me.Protect Password:="êàðàò1708159357", DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowFormattingCells:=True
ElseIf Not Intersect(cell, Range("Q:Q")) Is Nothing Then
Me.Unprotect Password:="êàðàò1708159357"
.Offset(0, -12).Value = Day(Date + 30)
.Offset(0, -11).Value = Month(Date + 30)
.Offset(0, -14).Value = .Offset(0, -6).Value
.Locked = True
Me.Protect Password:="êàðàò1708159357", DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowFormattingCells:=True
End If
End With
Next
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
Подскажите пожалуйста, куда и что добавить чтобы при изменении или вводе в столбик К, в ячейку справа вставилось значение ячейки K деленное на 11... т.е. что то типа такого)
Код
If Not Intersect(cell, Range("K:K")) Is Nothing Then
Me.Unprotect Password:="êàðàò1708159357"
.Offset(0, 1).Value = .Offset(0, 0).Value/11
Me.Protect Password:="êàðàò1708159357", DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowFormattingCells:=True
В противном случае, при редактировании (может и ошибочном а может и специальном) это приведет к выполнению макроса и вставке новых дат... А этого делать нельзя...В том и суть макроса, чтобы отражал дату внесения информации, ну и не только)
Меня мой макрос устраивает тем что он работает))) Дело в том что я не сразу пронял про www... И до сих пор не совсем понял что сделал этот макрос? Чтобы защита ячеек действовала только на действия юзера? А макросу чтоб защита не мешала? так я понимаю.. Я сделал выполнение этого макроса... Он должен оставаться в Коде? Но вы мне еще убрали защиту ячейки в столбце Q после редактирования...
Код работает, я в него вставил вот только 15 строку... ниже код без нее... Нужно чтобы при редактировании в столбце Q:Q в ячейку q-13 вставлялось значение формулы из q-6. Незнаю понятно или нет объясняю... ну вот в 13 и 14 строке макроса: при редактировании в столбце Q:Q в q-12 вставляется День, в q-11 месяц...
Код
Application.ScreenUpdating = False
Application.EnableEvents = False
On Error Resume Next
For Each cell In Target
With cell
If Not Intersect(cell, Range("N:N")) Is Nothing Then
Me.Unprotect Password:="123"
.Offset(0, 1).Value = Now
Me.Protect Password:="123", DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowFormattingCells:=True
ElseIf Not Intersect(cell, Range("Q:Q")) Is Nothing Then
Me.Unprotect Password:="123"
.Offset(0, -12).Value = Day(Date + 30)
.Offset(0, -11).Value = Month(Date + 30)
.Locked = True
Me.Protect Password:="123", DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowFormattingCells:=True
End If
End With
Next
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
Application.ScreenUpdating = False
Application.EnableEvents = False
On Error Resume Next
For Each cell In Target
With cell
If Not Intersect(cell, Range("N:N")) Is Nothing Then
Me.Unprotect Password:="123"
.Offset(0, 1).Value = Now
Me.Protect Password:="123", DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowFormattingCells:=True
ElseIf Not Intersect(cell, Range("Q:Q")) Is Nothing Then
Me.Unprotect Password:="123"
.Offset(0, -12).Value = Day(Date + 30)
.Offset(0, -11).Value = Month(Date + 30)
.Offset(0, -13).Value
.Locked = True
Me.Protect Password:="123", DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowFormattingCells:=True
End If
End With
Next
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
помогите пожалуйста уже три часа экспериментирую ничего не помогает) Что нужно вставить после Value где .Offset(0, -13). (15строка) Что вставить чтобы в -13 столбе вписывалось ЗНАЧЕНИЕ формулы, которая находится от столбца Q:Q в -6 столбце? что ни пробовал, то ложь, то ссылку на формулу вставляет....
еще один малюсенький вопросик. Почему когда вручную ставишь защиту, устанавливаешь разрешение на изменение формата ячеек - тогда работает, а когда макрос ставит защиту то делать вообще ничего нельзя)))???