только может вернуть... Intersect(Target, Range("N24"))
Не не вариант - она же не меняется - там формула сама считает. Нужно указать диапазон, изменения в котором нужно учитывать, например С5:С9 [vba]
Код
If Not Intersect(Target, Range("c5:c9")) Is Nothing Then
[/vba] Например можно так: [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) Dim s$ On Error Resume Next If Intersect(Target, Range("c5:c9")) Is Nothing Then Exit Sub
With Range("N24") If .Value < 30 And Len(.Value) > 0 Then .AddComment .Comment.Text Text:="Слишком мало значений для определения характеристик однородности прочности бетона. Нужно не менее 30 шт. " .Comment.Shape.Width = 150 s = s & vbCr & "Слишком мало значений для определения характеристик однородности прочности бетона. Нужно не менее 30 шт. " Else .ClearComments End If End With With Range("N25") If .Value < 15 And Len(.Value) > 0 Then .AddComment .Comment.Text Text:="Слишком мало значений для определения характеристик однородности прочности бетона. Нужно не менее 30 шт. " .Comment.Shape.Width = 150 s = s & vbCr & "Слишком мало значений для определения характеристик однородности прочности бетона. Нужно не менее 30 шт. " Else .ClearComments End If End With With Range("O26") If .Value < 20 And Len(.Value) > 0 Then .AddComment .Comment.Text Text:="Слишком мало значений для определения характеристик однородности прочности бетона. Нужно не менее 30 шт. " .Comment.Shape.Width = 150 s = s & vbCr & "Слишком мало значений для определения характеристик однородности прочности бетона. Нужно не менее 30 шт. " Else .ClearComments End If End With If Len(s) > 0 Then MsgBox s End Sub
только может вернуть... Intersect(Target, Range("N24"))
Не не вариант - она же не меняется - там формула сама считает. Нужно указать диапазон, изменения в котором нужно учитывать, например С5:С9 [vba]
Код
If Not Intersect(Target, Range("c5:c9")) Is Nothing Then
[/vba] Например можно так: [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) Dim s$ On Error Resume Next If Intersect(Target, Range("c5:c9")) Is Nothing Then Exit Sub
With Range("N24") If .Value < 30 And Len(.Value) > 0 Then .AddComment .Comment.Text Text:="Слишком мало значений для определения характеристик однородности прочности бетона. Нужно не менее 30 шт. " .Comment.Shape.Width = 150 s = s & vbCr & "Слишком мало значений для определения характеристик однородности прочности бетона. Нужно не менее 30 шт. " Else .ClearComments End If End With With Range("N25") If .Value < 15 And Len(.Value) > 0 Then .AddComment .Comment.Text Text:="Слишком мало значений для определения характеристик однородности прочности бетона. Нужно не менее 30 шт. " .Comment.Shape.Width = 150 s = s & vbCr & "Слишком мало значений для определения характеристик однородности прочности бетона. Нужно не менее 30 шт. " Else .ClearComments End If End With With Range("O26") If .Value < 20 And Len(.Value) > 0 Then .AddComment .Comment.Text Text:="Слишком мало значений для определения характеристик однородности прочности бетона. Нужно не менее 30 шт. " .Comment.Shape.Width = 150 s = s & vbCr & "Слишком мало значений для определения характеристик однородности прочности бетона. Нужно не менее 30 шт. " Else .ClearComments End If End With If Len(s) > 0 Then MsgBox s End Sub
А вашем фале почему то не стало выскакивать данное приложение пугающее (((( даже если и слишком мало значений. А с этим кодом было (((( [vba]
Код
On Error Resume Next With Range("N25") If .Value < 15 And Len(.Value) > 0 Then .AddComment .Comment.Text Text:="Слишком мало значений для определения характеристик однородности прочности бетона. Нужно не менее 30 шт. " .Comment.Shape.Width = 150 MsgBox "Слишком мало значений для определения характеристик однородности прочности бетона. Нужно не менее 30 шт. " Else .ClearComments End If End With End Sub
[/vba]
А вашем фале почему то не стало выскакивать данное приложение пугающее (((( даже если и слишком мало значений. А с этим кодом было (((( [vba]
Код
On Error Resume Next With Range("N25") If .Value < 15 And Len(.Value) > 0 Then .AddComment .Comment.Text Text:="Слишком мало значений для определения характеристик однородности прочности бетона. Нужно не менее 30 шт. " .Comment.Shape.Width = 150 MsgBox "Слишком мало значений для определения характеристик однородности прочности бетона. Нужно не менее 30 шт. " Else .ClearComments End If End With End Sub
_Boroda_, Тезка помоги разобраться (((( опять я походу что то не так сотварил (((( Файл во вложении вроде бы все делал как говорила МАНЯША [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) On Error Resume Next
With Range("N24") '... End With
With Range("N25") '... End With
'и т.д. End Sub
[/vba] Но не всплывает теперь как было ранее примечание :'( Я прописал на все ячейки (как бы продолжил) но скорее всего ошибся где то как всегда из-за не внимательности или глупости. [moder]Я сейчас не могу долго разбираться - на работе работу работаю. А до вечера, думаю, Вы уже сами разберетесь.
_Boroda_, Тезка помоги разобраться (((( опять я походу что то не так сотварил (((( Файл во вложении вроде бы все делал как говорила МАНЯША [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) On Error Resume Next
With Range("N24") '... End With
With Range("N25") '... End With
'и т.д. End Sub
[/vba] Но не всплывает теперь как было ранее примечание :'( Я прописал на все ячейки (как бы продолжил) но скорее всего ошибся где то как всегда из-за не внимательности или глупости. [moder]Я сейчас не могу долго разбираться - на работе работу работаю. А до вечера, думаю, Вы уже сами разберетесь.lebensvoll
смотрите фото и сам файл почему такое большое примечание
Все верно - проверка идет по всем параметрам, и выводится одно длинное сообщение с описанием всех ошибок. Или Вы хотели 3-4 е отдельно всплывающих - чтобы окончательно отбить охоту работать у заполняющих.
посоветуюхорошую литературу по прописыванию кодов VBA для чайника
Вы посоветуете, или Вам посоветовать . См. спец раздел на этом форуме - БИБЛИОТЕКА А вообще - лучшее обучение (было для меня) читать форум - вопросы - смотреть и разбирать их решения
смотрите фото и сам файл почему такое большое примечание
Все верно - проверка идет по всем параметрам, и выводится одно длинное сообщение с описанием всех ошибок. Или Вы хотели 3-4 е отдельно всплывающих - чтобы окончательно отбить охоту работать у заполняющих.
посоветуюхорошую литературу по прописыванию кодов VBA для чайника
Вы посоветуете, или Вам посоветовать . См. спец раздел на этом форуме - БИБЛИОТЕКА А вообще - лучшее обучение (было для меня) читать форум - вопросы - смотреть и разбирать их решения
Private Sub Worksheet_Change(ByVal Target As Range) Dim s$ Const commWidth As Integer = 150
With Target On Error Resume Next Select Case Target.Address Case "$N$24" If .Value < 30 And Len(.Value) > 0 Then .AddComment .Comment.Text Text:="Слишком мало значений для определения характеристик однородности прочности бетона. Нужно не менее 30 шт. " .Comment.Shape.Width = commWidth s = s & vbCr & "Слишком мало значений для определения характеристик однородности прочности бетона. Нужно не менее 30 шт. " Else: .ClearComments End If Case "$N$25" If .Value < 15 And Len(.Value) > 0 Then .AddComment .Comment.Text Text:="Слишком мало значений для определения характеристик однородности прочности бетона. Нужно не менее 30 шт. " .Comment.Shape.Width = commWidth s = s & vbCr & "Слишком мало значений для определения характеристик однородности прочности бетона. Нужно не менее 30 шт. " Else: .ClearComments End If Case "$O$26" If .Value < 20 And Len(.Value) > 0 Then .AddComment .Comment.Text Text:="Слишком мало значений для определения характеристик однородности прочности бетона. Нужно не менее 30 шт. " .Comment.Shape.Width = commWidth s = s & vbCr & "Слишком мало значений для определения характеристик однородности прочности бетона. Нужно не менее 30 шт. " Else: .ClearComments End If Case "$P$26" If .Value < 20 And Len(.Value) > 0 Then .AddComment .Comment.Text Text:="Слишком мало значений для определения характеристик однородности прочности бетона. Нужно общее кол-во участков не менее 20 уч. " .Comment.Shape.Width = commWidth s = s & vbCr & "Слишком мало значений для определения характеристик однородности прочности бетона. Нужно общее кол-во участков не менее 20 уч. " Else: .ClearComments End If Case "$Q$26" If .Value < 12 And Len(.Value) > 0 Then .AddComment .Comment.Text Text:="Слишком мало значений для определения характеристик однородности прочности бетона. Нужно общее кол-во участков не менее 12 отрывов. " .Comment.Shape.Width = commWidth s = s & vbCr & "Слишком мало значений для определения характеристик однородности прочности бетона. Нужно общее кол-во участков не менее 12 отрывов. " Else: .ClearComments End If Case "$R$26" If .Value < 12 And Len(.Value) > 0 Then .AddComment .Comment.Text Text:="Слишком мало значений для определения характеристик однородности прочности бетона. Нужно общее кол-во участков не менее 12 кернов. " .Comment.Shape.Width = commWidth s = s & vbCr & "Слишком мало значений для определения характеристик однородности прочности бетона. Нужно общее кол-во участков не менее 12 кернов. " Else: .ClearComments End If Case Else: Exit Sub End Select End With If Len(s) > 0 Then MsgBox s, vbExclamation, "Шеф, всё пропало!" End Sub
[/vba]
Для N25 ограничение в условии 15, а в тексте 30 и для О26 расходится - таки что править .
Немного изменил код SLAVICK [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) Dim s$ Const commWidth As Integer = 150
With Target On Error Resume Next Select Case Target.Address Case "$N$24" If .Value < 30 And Len(.Value) > 0 Then .AddComment .Comment.Text Text:="Слишком мало значений для определения характеристик однородности прочности бетона. Нужно не менее 30 шт. " .Comment.Shape.Width = commWidth s = s & vbCr & "Слишком мало значений для определения характеристик однородности прочности бетона. Нужно не менее 30 шт. " Else: .ClearComments End If Case "$N$25" If .Value < 15 And Len(.Value) > 0 Then .AddComment .Comment.Text Text:="Слишком мало значений для определения характеристик однородности прочности бетона. Нужно не менее 30 шт. " .Comment.Shape.Width = commWidth s = s & vbCr & "Слишком мало значений для определения характеристик однородности прочности бетона. Нужно не менее 30 шт. " Else: .ClearComments End If Case "$O$26" If .Value < 20 And Len(.Value) > 0 Then .AddComment .Comment.Text Text:="Слишком мало значений для определения характеристик однородности прочности бетона. Нужно не менее 30 шт. " .Comment.Shape.Width = commWidth s = s & vbCr & "Слишком мало значений для определения характеристик однородности прочности бетона. Нужно не менее 30 шт. " Else: .ClearComments End If Case "$P$26" If .Value < 20 And Len(.Value) > 0 Then .AddComment .Comment.Text Text:="Слишком мало значений для определения характеристик однородности прочности бетона. Нужно общее кол-во участков не менее 20 уч. " .Comment.Shape.Width = commWidth s = s & vbCr & "Слишком мало значений для определения характеристик однородности прочности бетона. Нужно общее кол-во участков не менее 20 уч. " Else: .ClearComments End If Case "$Q$26" If .Value < 12 And Len(.Value) > 0 Then .AddComment .Comment.Text Text:="Слишком мало значений для определения характеристик однородности прочности бетона. Нужно общее кол-во участков не менее 12 отрывов. " .Comment.Shape.Width = commWidth s = s & vbCr & "Слишком мало значений для определения характеристик однородности прочности бетона. Нужно общее кол-во участков не менее 12 отрывов. " Else: .ClearComments End If Case "$R$26" If .Value < 12 And Len(.Value) > 0 Then .AddComment .Comment.Text Text:="Слишком мало значений для определения характеристик однородности прочности бетона. Нужно общее кол-во участков не менее 12 кернов. " .Comment.Shape.Width = commWidth s = s & vbCr & "Слишком мало значений для определения характеристик однородности прочности бетона. Нужно общее кол-во участков не менее 12 кернов. " Else: .ClearComments End If Case Else: Exit Sub End Select End With If Len(s) > 0 Then MsgBox s, vbExclamation, "Шеф, всё пропало!" End Sub
[/vba]
Для N25 ограничение в условии 15, а в тексте 30 и для О26 расходится - таки что править .Udik
Вы посоветуете, или Вам посоветовать . См. спец раздел на этом форуме - БИБЛИОТЕКА yes
с меня советчик как с моей бабули балерина )))) просто о печатался СПАСИБО ВСЕМ ЗА ТО ЧТО НЕ БРОСАЕТЕ и ДЕЛАЕТЕ, ПОМОГАЕТЕ и ОБЪЯСНЯЕТЕ как и что Udik, спасибо!!! Блин век живи век учись ВЕЛИКИЕ СЛОВА!!! НО, и все знать тож НЕЛЬЗЯ ))))) БРАВО ГОСПОДА Я ВАМ АПЛОДИРУЮ СТОЯ, спасибо!!!
SLAVICK,
Цитата
Вы посоветуете, или Вам посоветовать . См. спец раздел на этом форуме - БИБЛИОТЕКА yes
с меня советчик как с моей бабули балерина )))) просто о печатался СПАСИБО ВСЕМ ЗА ТО ЧТО НЕ БРОСАЕТЕ и ДЕЛАЕТЕ, ПОМОГАЕТЕ и ОБЪЯСНЯЕТЕ как и что Udik, спасибо!!! Блин век живи век учись ВЕЛИКИЕ СЛОВА!!! НО, и все знать тож НЕЛЬЗЯ ))))) БРАВО ГОСПОДА Я ВАМ АПЛОДИРУЮ СТОЯ, спасибо!!!lebensvoll