Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("t5, v5, x5")) Is Nothing Then u = Cells(Rows.Count, "a").End(xlUp).Row + 1 If Range("t5") <> "" And Range("v5") <> "" And Range("x5") Then Range("a" & u) = Range("v5") + Range("t5") Range("b" & u) = Range("x5") End If End If End Sub
[/vba]
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("t5, v5, x5")) Is Nothing Then u = Cells(Rows.Count, "a").End(xlUp).Row + 1 If Range("t5") <> "" And Range("v5") <> "" And Range("x5") Then Range("a" & u) = Range("v5") + Range("t5") Range("b" & u) = Range("x5") End If End If End Sub
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("t5, v5, x5")) Is Nothing Then u = Sheets("показания_глюкометра").Cells(Rows.Count, "a").End(xlUp).Row + 1 If Range("t5") <> "" And Range("v5") <> "" And Range("x5") Then Sheets("показания_глюкометра").Range("a" & u) = Range("v5") + Range("t5") Sheets("показания_глюкометра").Range("b" & u) = Range("x5") End If End If End Sub
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("t5, v5, x5")) Is Nothing Then u = Sheets("показания_глюкометра").Cells(Rows.Count, "a").End(xlUp).Row + 1 If Range("t5") <> "" And Range("v5") <> "" And Range("x5") Then Sheets("показания_глюкометра").Range("a" & u) = Range("v5") + Range("t5") Sheets("показания_глюкометра").Range("b" & u) = Range("x5") End If End If End Sub
Private Sub Worksheet_Change(ByVal Target As Range) Set x_ = Intersect(Target, Range("T5, V5, X5")) If Not x_ Is Nothing Then v_ = Range("T5") d_ = Range("V5") p_ = Range("X5") If v_ <> "" And d_ <> "" And p_ <> "" Then If IsNumeric(v_) Then If v_ >= 0 And v_ < 1 Then If IsDate(d_) Then If IsNumeric(p_) Then With Sheets("показания_глюкометра") r_ = .Cells(.Rows.Count, 1).End(3).Row + 1 .Cells(r_, 1) = d_ + v_ .Cells(r_, 2) = p_ Application.EnableEvents = 0 Range("T5, V5, X5").ClearContents Application.EnableEvents = 1 End With End If End If End If End If End If 'перепрыгивание на следующую ячейку ввода If x_(1).Address(0, 0) <> "X5" Then n_ = 2 Else n_ = -4 End If x_(1).Offset(, n_).Select End If End Sub
[/vba]
Еще вариант. С плюшками всякими [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) Set x_ = Intersect(Target, Range("T5, V5, X5")) If Not x_ Is Nothing Then v_ = Range("T5") d_ = Range("V5") p_ = Range("X5") If v_ <> "" And d_ <> "" And p_ <> "" Then If IsNumeric(v_) Then If v_ >= 0 And v_ < 1 Then If IsDate(d_) Then If IsNumeric(p_) Then With Sheets("показания_глюкометра") r_ = .Cells(.Rows.Count, 1).End(3).Row + 1 .Cells(r_, 1) = d_ + v_ .Cells(r_, 2) = p_ Application.EnableEvents = 0 Range("T5, V5, X5").ClearContents Application.EnableEvents = 1 End With End If End If End If End If End If 'перепрыгивание на следующую ячейку ввода If x_(1).Address(0, 0) <> "X5" Then n_ = 2 Else n_ = -4 End If x_(1).Offset(, n_).Select End If End Sub
_Boroda_, Плюшки удобные, но передвинул столбцы на Листе 2, а данные вносит на прежние место (по столбцам A и B). Подскажите что и где можно изменять чтобы поиск на Листе 2 производился по последней заполненной ячейки в столбце. (в данном файле по столбцу J )
_Boroda_, Плюшки удобные, но передвинул столбцы на Листе 2, а данные вносит на прежние место (по столбцам A и B). Подскажите что и где можно изменять чтобы поиск на Листе 2 производился по последней заполненной ячейки в столбце. (в данном файле по столбцу J )
[/vba]у меня от нечего делать написаны и стерли их. Впрочем, дело Ваше [vba]
Код
Range("g27, i27, k27").ClearContents 'ластик End If Set x_ = Intersect(Target, Range("g27, i27, k27")) If Not x_ Is Nothing Then If x_(1).Address(0, 0) <> "K27" Then n_ = 2 Else n_ = -4 End If x_(1).Offset(, n_).Select End If End If End Sub
[/vba]
Gold_Barsik, зря Вы решили, что строки с [vba]
Код
Application.EnableEvents
[/vba]у меня от нечего делать написаны и стерли их. Впрочем, дело Ваше [vba]
Код
Range("g27, i27, k27").ClearContents 'ластик End If Set x_ = Intersect(Target, Range("g27, i27, k27")) If Not x_ Is Nothing Then If x_(1).Address(0, 0) <> "K27" Then n_ = 2 Else n_ = -4 End If x_(1).Offset(, n_).Select End If End If End Sub
_Boroda_, Здравствуйте. Я не решал что стирать, что оставлять. Спасибо большое за помощь! Это по моей невнимательности, незнанию и неопытности. Наверно решил что раз есть макрос [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
[/vba] то второе название такое же будет давать глюки. И..... подрезал. Буду пробовать вернуть их как-то на место. Может что то получится? Пока не получается. В приложенном файле работает, на моём пока не хочет.
_Boroda_, Здравствуйте. Я не решал что стирать, что оставлять. Спасибо большое за помощь! Это по моей невнимательности, незнанию и неопытности. Наверно решил что раз есть макрос [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
[/vba] то второе название такое же будет давать глюки. И..... подрезал. Буду пробовать вернуть их как-то на место. Может что то получится? Пока не получается. В приложенном файле работает, на моём пока не хочет.Gold_Barsik
Сообщение отредактировал Gold_Barsik - Вторник, 23.07.2019, 14:18
Если не уверены, то нужно оставлять те части кода, в которых не уверены. Если здесь работает, а там не работает, то нужно искать отличия в файлах
Если не уверены, то нужно оставлять те части кода, в которых не уверены. Если здесь работает, а там не работает, то нужно искать отличия в файлах_Boroda_
Чтобы узнать для чего - почитайте справку Чтобы понять куда - пробегите весь код в пошаговом режиме через F8 (через F9 поставьте на первой строке макроса точку останова и заполняйте строку 29 на листе). Увидите, что на строке с ClearContents макрос снова начинает свою работу, не прекращая при этом предыдущий макрос. Пробегает сам себя и снова продолжает со строки, следующей за ClearContents. В Вашем случае это только замедляет работу маккроса и всё, больше ни на что не влияет. Но при другом коде такие дополнительные заходы в код могут все испортить Следовательно, EnableEvents нужно выключать перед ClearContents и включать после В общем случае - выключать перед действиями, запускающими события листа, книги, ... (если автозапуск этих событий не предусмотрен самим кодом)
Чтобы узнать для чего - почитайте справку Чтобы понять куда - пробегите весь код в пошаговом режиме через F8 (через F9 поставьте на первой строке макроса точку останова и заполняйте строку 29 на листе). Увидите, что на строке с ClearContents макрос снова начинает свою работу, не прекращая при этом предыдущий макрос. Пробегает сам себя и снова продолжает со строки, следующей за ClearContents. В Вашем случае это только замедляет работу маккроса и всё, больше ни на что не влияет. Но при другом коде такие дополнительные заходы в код могут все испортить Следовательно, EnableEvents нужно выключать перед ClearContents и включать после В общем случае - выключать перед действиями, запускающими события листа, книги, ... (если автозапуск этих событий не предусмотрен самим кодом)_Boroda_