Страницы: 1 2 След.
RSS
Макрос, который разрешает вставить данные только в одну из ячеек в определенном диапазоне
 
Добрый день! Помогите расширить действие макроса. Есть макрос, который разрешает вставить данные только в одну из ячеек в определенном диапазоне между 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 столбцом.
Изменено: Алексей Галимов - 04.04.2018 19:11:51
 
Неужели никто не знает?
 
Алексей Галимов, здравствуйте) сперва выделите код и нажмите на панели вот такую кнопку < … > - это по оформлению  :)

по коду: If Target.Row > 13 And Target.Column > 67 And Target.Column < 74 Then это условие "переводится" как если строка выделенной ячейки больше 13 строки а также столбец выделенной ячейки больше 67 а также столбец выделенной ячейки меньше 74, то делаем действия.

То есть должны быть выполнены все 3 условия. Думаю, что вы понимаете теперь, что нужно поменять?  ;)
Изменено: Jack Famous - 04.04.2018 16:43:38
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Jack Famous, смысл этих условий понятен, но как только не вставлял не получается  :(  
 
А нужно ли сие действо если все решается проверкой данных? Но это вопрос риторический, ибо обращать в светлую веру никого не стану :-)

Хотя наверно INTERSECT тут бы не помешал . Чур меня, чур.
Изменено: БМВ - 04.04.2018 17:00:54
По вопросам из тем форума, личку не читаю.
 
Алексей Галимов, гляньте этот, а лучше сразу вот этот пример — да и тему ту почитайте целиком ;)

БМВ, не обязательно писать код снова и снова, чтобы помочь — по ссылке ваше решение  :D
Изменено: Jack Famous - 04.04.2018 17:13:56
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Jack Famous, там должно быть такое условие, если вводятся данные в правую ячейку, то в левую соседнюю вводить нельзя, тоже самое и наоборот, если данные вводятся в левую, то в правой они не должны быть!
 
Алексей Галимов, Проверка данных, но исходя из кода провнеряете вы не соседние ячейки а все 6. что и реализовано.
По вопросам из тем форума, личку не читаю.
 
OFF: БМВ, как по мне — это намного лучше макроса!  :idea:  Взял на вооружение — спасибо ;)
Всё гениальное - просто  :D
Изменено: Jack Famous - 04.04.2018 17:40:17
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
БМВ, это отличная формула, но она не подойдет так как проверка данных занята. Если бы можно было вставить в проверку данных два условия, тогда да, но наверное это невозможно  :(  
 
Jack Famous,я перебрал все варианты и ничего не получается. При добавлении (объединении) условий для 57-58 столбца, перестают работать условия для предыдущих 6 строк! Помогите, пожалуйста, я уже голову сломал с этим макросом!
 
Цитата
Алексей Галимов написал:
два условия, тогда да, но наверное это невозможно    
да такое не возможно, но вот изменить цель, чтоб она в случае невозможности выбора не позволила и выбрать , можно
По вопросам из тем форума, личку не читаю.
 
Алексей Галимов, вы хотите именно добавить условия или заменить предыдущие?…
Напишите словами, какие условия нужны (полный перечень). Завтра гляну (или сегодня, если время дома будет)  ;)
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Jack Famous, я хочу добавить условия, чтобы можно было вставлять данные только в одну из ячеек в диапазоне между 57-58 столбцом. Если в данном диапазоне вводятся данные в правую ячейку, то в левую соседнюю нужно ограничить (исключить) ввод, тоже самое и наоборот, если данные вводятся в левую, то в правой  они не должны быть введены! Заранее спасибо!
 
БМВ,в моем случае =цель это имя под которым скрывается знак V на другом листе. См. вложение. А можно сделать чтобы именно знак V не позволял вводить данные в соседние ячейки?
 
Алексей Галимов, Понимаете, тут такое дело, скриншоты и они ;t внедренные в файлы, не являются примером, который регламентируется правилом форума. Нарисуйте пример приближенный к вашим хотелкам, тогда результат будет качественнее и быстрее.  Чтоб не получалось как #10.
По вопросам из тем форума, личку не читаю.
 
БМВ, в диапазоне DN-BO знак V должен вставляться только в одну из ячеек. Если в данном  диапазоне вводится V в правую ячейку, то в левую соседнюю нужно  ограничить (исключить) ввод, тоже самое и наоборот, если V вводится  в левую, то в правой он не должны быть введен!
 
посмотрите вторую часть Этого. У вас была некорректная ссылка на строку в имени. смещалось на 3 строки.

Минус у такого решения только один, нет обратной связи и сообщения. ,но это можно внести в сообщение при вводе в проверке данных.  
Изменено: БМВ - 09.04.2018 22:11:53
По вопросам из тем форума, личку не читаю.
 
БМВ,я понял свою ошибку, поправил и вставил в свою таблицу, все работает для простой таблицы. Но для моей таблицы эта формула не работает, так как строки в моей таблице добавляются кнопкой. Новые строки добавляются с условиями, которые определены (прописаны) в первой строке. Получается эта формула не применима при добавлении строк кнопкой  :cry:  
 
Алексей Галимов, нет условий прописанных в первой строке. Приведу пример, если находясь в A1  имени введете переменную TEST и =B1, потом введете в A2 =TEST, то там будет значение из B2 , а если тоже ввести в D4, то там будет значение из E4.  и т.д. Все смещается относительно ячейки где использовано имя.
По вопросам из тем форума, личку не читаю.
 
БМВ,а можете в моей таблице прописать это условие для 57-58 столбца?
 
OFF: БМВ, Алексей Галимов — настойчивый, но в тоже время деликатный парень  :D
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Цитата
Алексей Галимов написал:
БМВ ,а можете
а могу, только у вас там много всяких переменных, я ввел одну свою, приметную :-)
По вопросам из тем форума, личку не читаю.
 
БМВ,не работает. После добавления новой строки (при нажатии на кнопку - Добавить строку) выпадающие знаки V в диапазоне 57-58 столбца не открываются.
 
OFF:
Цитата
Алексей Галимов написал:
не работает
БМВ, опять оплошал  :D
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Алексей Галимов, Я не знаю что у вас там за макрос, что множит строки , но в проверке данных, после его работы не то, что строкой выше.
Изменено: БМВ - 04.04.2018 23:15:44
По вопросам из тем форума, личку не читаю.
 
Так никто и не помог! Неужели перевелись на Руси специалисты по макросам?
 
Цитата
Алексей Галимов написал:
Так никто и не помог!
и у вас ещё язык поворачивается так говорить, после того, как БМВ до позднего вечера пытался понять, что у вас происходит?!  :evil:
Файл с паролем на 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
Изменено: Jack Famous - 05.04.2018 11:35:22
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Цитата
Jack Famous написал:
о позднего вечера пытался понять, что у вас происходит?!  
не, не пытался. :-) там все прозрачно, кто-то что-то сделал, а теперь человек пытается понять что-там наделано, и адаптировать...
Цитата
Алексей Галимов написал:
Так никто и не помог!
не помог сделать за вас все , так как правильно написано это в другой радел, к слову я там не появляюсь, так что интереса в новом клиенте не испытываю.

Цитата
Алексей Галимов написал:
Неужели перевелись на Руси специалисты по макросам?
да, последний закончился сразу после написания того файла. Остались одни VBA программисты.
По вопросам из тем форума, личку не читаю.
 
Цитата
БМВ написал:
кто-то что-то сделал, а теперь человек пытается понять что-там наделано
Алексей Галимов, если хотите сами разобраться, то разбивайте свою задачу на темы (с грамотным названием, описанием и файл-примером) и последовательно тут на форуме разбирайтесь… По вопросу ограничения ввода вам тут дали решение как штатными инструментами, так и макросом, так что одна подзадача разобрана.
Немного об основах программирования на VBA: макросы и модули.
Цитата
БМВ написал:
я там не появляюсь, так что интереса в новом клиенте не испытываю
такая же ситуация  :D
Изменено: Jack Famous - 05.04.2018 11:57:35
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Страницы: 1 2 След.
Наверх