Добрый день! Помогите расширить действие макроса. Есть макрос, который разрешает вставить данные только в одну из ячеек в определенном диапазоне между 68 и 73 столбцом.
Код
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row > 13 And Target.Column > 67 And Target.Column < 74 Then
n = 0
For i = 68 To 73
If Cells(Target.Row, i) <> "" Then n = n + 1
Next i
If n > 1 Then
Cells(Target.Row, Target.Column) = ""
MsgBox ("Внимание, Вы ввели в ячейки несколько видов проверки. Вид проверки нужно отметить только в одной из шести ячеек, пожалуйста исправьте!")
Exit Sub
End If
End IfEnd Sub
Помогите расширить действие макроса, что бы можно было вставлять данные в одну из ячеек в диапазоне между 57-58 столбцом.
Алексей Галимов, здравствуйте) сперва выделите код и нажмите на панели вот такую кнопку < … > - это по оформлению
по коду: If Target.Row > 13 And Target.Column > 67 And Target.Column < 74 Then это условие "переводится" как если строка выделенной ячейки больше 13 строки а также столбец выделенной ячейки больше 67 а также столбец выделенной ячейки меньше 74, то делаем действия.
То есть должны быть выполнены все 3 условия. Думаю, что вы понимаете теперь, что нужно поменять?
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Jack Famous, там должно быть такое условие, если вводятся данные в правую ячейку, то в левую соседнюю вводить нельзя, тоже самое и наоборот, если данные вводятся в левую, то в правой они не должны быть!
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
БМВ, это отличная формула, но она не подойдет так как проверка данных занята. Если бы можно было вставить в проверку данных два условия, тогда да, но наверное это невозможно
Jack Famous,я перебрал все варианты и ничего не получается. При добавлении (объединении) условий для 57-58 столбца, перестают работать условия для предыдущих 6 строк! Помогите, пожалуйста, я уже голову сломал с этим макросом!
Алексей Галимов, вы хотите именно добавить условия или заменить предыдущие?… Напишите словами, какие условия нужны (полный перечень). Завтра гляну (или сегодня, если время дома будет)
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Jack Famous, я хочу добавить условия, чтобы можно было вставлять данные только в одну из ячеек в диапазоне между 57-58 столбцом. Если в данном диапазоне вводятся данные в правую ячейку, то в левую соседнюю нужно ограничить (исключить) ввод, тоже самое и наоборот, если данные вводятся в левую, то в правой они не должны быть введены! Заранее спасибо!
БМВ,в моем случае =цель это имя под которым скрывается знак V на другом листе. См. вложение. А можно сделать чтобы именно знак V не позволял вводить данные в соседние ячейки?
Алексей Галимов, Понимаете, тут такое дело, скриншоты и они ;t внедренные в файлы, не являются примером, который регламентируется правилом форума. Нарисуйте пример приближенный к вашим хотелкам, тогда результат будет качественнее и быстрее. Чтоб не получалось как #10.
БМВ, в диапазоне DN-BO знак V должен вставляться только в одну из ячеек. Если в данном диапазоне вводится V в правую ячейку, то в левую соседнюю нужно ограничить (исключить) ввод, тоже самое и наоборот, если V вводится в левую, то в правой он не должны быть введен!
БМВ,я понял свою ошибку, поправил и вставил в свою таблицу, все работает для простой таблицы. Но для моей таблицы эта формула не работает, так как строки в моей таблице добавляются кнопкой. Новые строки добавляются с условиями, которые определены (прописаны) в первой строке. Получается эта формула не применима при добавлении строк кнопкой
Алексей Галимов, нет условий прописанных в первой строке. Приведу пример, если находясь в A1 имени введете переменную TEST и =B1, потом введете в A2 =TEST, то там будет значение из B2 , а если тоже ввести в D4, то там будет значение из E4. и т.д. Все смещается относительно ячейки где использовано имя.
OFF:БМВ, Алексей Галимов — настойчивый, но в тоже время деликатный парень
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
и у вас ещё язык поворачивается так говорить, после того, как БМВ до позднего вечера пытался понять, что у вас происходит?! Файл с паролем на VBA, вордовские документы со скриншотами, нумерация столбцов некорректная (один не пронумерован), "опять не то" — что дальше??? В общем, со всеми своими хотелками, думаю, что вам лучше обратиться сюда.
Макрос (для модуля листа) запрета ввода более одного значения прикрепляю, т.к. обещал. Адаптировать в ваш файл (со всеми нюансами исполнения) желания нет. Удачи!
Код
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rng As Range
Set rng = Union([BE4:BF7], [BE11:BF11], [BE15:BF21], [BE4:BF7]) 'Диапазоны, в которых осуществляется проверка
If Not Intersect(Target, rng) Is Nothing And WorksheetFunction.CountA(Cells(Target.Row, 57), Cells(Target.Row, 58)) > 1 Then '57 и 58 - номера столбцов
MsgBox "Не более 1 значения!", vbCritical, "ERROR": Target.ClearContents
End If
End Sub
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
не помог сделать за вас все , так как правильно написано это в другой радел, к слову я там не появляюсь, так что интереса в новом клиенте не испытываю.
Цитата
Алексей Галимов написал: Неужели перевелись на Руси специалисты по макросам?
да, последний закончился сразу после написания того файла. Остались одни VBA программисты.
БМВ написал: кто-то что-то сделал, а теперь человек пытается понять что-там наделано
Алексей Галимов, если хотите сами разобраться, то разбивайте свою задачу на темы (с грамотным названием, описанием и файл-примером) и последовательно тут на форуме разбирайтесь… По вопросу ограничения ввода вам тут дали решение как штатными инструментами, так и макросом, так что одна подзадача разобрана. Немного об основах программирования на VBA:макросы и модули.
Цитата
БМВ написал: я там не появляюсь, так что интереса в новом клиенте не испытываю
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄