Здравствуйте, пожалуйста, помогите решить следующую задачу в *.xls На рабочей странице два соседних столбца (B1:С65535) с заголовками (B1:С1) Задача: Разрешить пользователю ввод любых данных в ячейки (B2:С65535) Обязательное условие: Пользователь не при каких обстоятельствах не может одновременно вводить данные в две соседние ячейки одной строки! Пример: Пользователь может вводить данные в ячейки (B2) или (C2). Пользователь не может вводить данные одновременно в ячейки (B2) и (C2).
Огромная благодарность создателям www.planetaexcel.ru и Гуру форума: pivas, IgorGO, EducatedFool извените, кого пропустил. Долго искал ответ на мой вопрос на сайте и форуме... К сожалению без результатно... Помогите, пожалуйста. С уважением, Дмитрий.
{quote}{login=Dophin}{date=09.04.2010 07:09}{thema=}{post}ввести легко, выделил нужные, ввел значение, нажал Ctrl+Enter. {/post}{/quote} :-) Но ведь это ещё исхитриться нужно.
{quote}{login=Dophin}{date=09.04.2010 07:09}{thema=}{post}ввести легко, выделил нужные, ввел значение, нажал Ctrl+Enter.{/post}{/quote} :-)А если нужно ввести разные значения?
{quote}{login=___}{date=09.04.2010 07:05}{thema=}{post}Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range) Dim r As Range Set r = Range("$b:$c") If Not (Intersect(r, Target) Is Nothing) Then If Target.Count > 1 Then Target.ClearContents End If End If End Sub{/post}{/quote} Событие SelectionChange наступает раньше, поэтому тут нужно использовать Worksheet_Change
Огромная благодарность всем за оперативные ответы!!! Да же не ожидал так быстро ответы получить. Извените, очевидно мой вопрос не совсем правильно был сформулирован мной, вернее одно слово из вопроса: "одновременно". Речь идёт о запрете одновременного ввода данных в две соседние ячейки одной строки, не в том плане, что нельзя выделить к примеру ячейки (B2) и (C2) и в один промежуток времени вводить в них данные (разные или одинаковые), а в том плане, что данные нельзя вводить в ячейки (B2) и (C2), а можно вводить только в ячейку (B2) или в ячейку (C2). Огромная просьба ко всем, пожалуйста, помогите найти простое, классическое изящное решение к примеру из встроенных функций, из логики или из другого меню, только, пожалуйста, без макросов. Задание вроде на первый взгляд очень простое и приметивное, но как его решить без макросов у меня уже мозг третий день кипит... Побывал на разных сайтах: programmersforum.ru, planetaexcel.ru, taurion.ru, it.kgsu.ru в поисках ответа на данный вопрос, и по этой причине задал свой вопрос на вашем форуме. Честное слово, больше нигде не задавал такой вопрос. Надеюсь на помощь Гуру. Сам обожаю и преклоняюсь перед excel!!! Пожалуй, мой самый любимый софт из всего софта!
Тогда и формулировать нужно было иначе, например, "Запрет ввода одинаковых значений в соседние ячейки". А что Вы так боитесь макросов? Они же не видны, не кусаются. Посмотрите пример.
{quote}{login=vikttur}{date=10.04.2010 01:58}{thema=}{post}Меню Данные-Проверка-Тип_данных "Другой"-Формула: В С2 =B2="", в В2 =C2=""{/post}{/quote}А копипаст? Здесь валидация не поможет :(
Ну, "вводить" и "вставлять" - понятия разные. Автор спрашивал о первом. Да и испуганное "...только, пожалуйста, без макросов". Это как последний вариант, соломинка утопающему, ведь за плот (читай - макрос) автор не хочет цепляться :)
Вариант названия темы: "Запрет ввода одинаковых значений в соседние ячейки" тоже не годится для названия темы, так же, как и мой вариант: "Запрет одновременного ввода данных в ячейки каждой строки двух соседних столбцов". Оба варианта не раскрывают сути вопроса в полной мере... Долго ломал голову, как точнее сформулировать название темы. Пользователь не может не вводить, не копировать значения в соседние ячейки! При чём не важно одинаковые эти значения или нет. В двух своих постах мною чётко было обозначено данное обстоятельство:
Цитирую самого себя: Пример: Пользователь может вводить данные в ячейки (B2) или (C2). Пользователь не может вводить данные одновременно в ячейки (B2) и (C2).
Цитирую самого себя: Речь идёт о запрете одновременного ввода данных в две соседние ячейки одной строки, не в том плане, что нельзя выделить к примеру ячейки (B2) и (C2) и в один промежуток времени вводить в них данные (разные или одинаковые), а в том плане, что данные нельзя вводить в ячейки (B2) и (C2), а можно вводить только в ячейку (B2) или в ячейку (C2).
Юрий М, прикреплёный Вами файл post_116037.xls открываю в Excel 2003 (EN) клик по Enable Macros или Disable Macros даные в ячейки (B2) или (C2) вводятся свободно, так же, как и в ячейки (B2) и (C2), что в нашей задаче не допустимо. Необходимо обеспечить ввод данных любым способом в ячейки (B2) или (C2)! И не допустить при этом ввода данных любым способом в ячейки (B2) и (C2)!
В свете вновь открывшихся... попробуйте так (см. пример). По поводу разрешить/запретить макросы - с таким подходом и любой другой вариант решения можно обойти. Например, если это будут Данные - Проверка, то зайти в этот пункт меню, и удалить условие.
{quote}{login=vikttur}{date=10.04.2010 01:58}{thema=}{post}Меню Данные-Проверка-Тип_данных "Другой"-Формула: В С2 =B2="", в В2 =C2="" Сообщение об ошибке можно подредактировать.{/post}{/quote} совершенно верно, только форомула в обоих случаях такая: =ИЛИ($B2="";$C2="")
dmdon, а может имеется в виду что если в В2 есть данные, то в С2 вводить нельзя, и наоборот если есть в С2 то в В2 - нельзя. Если да, то это наверное другая задача которую можно решить без vba условным форматированием.
{quote}{login=DV}{date=10.04.2010 01:37}{thema=}{post}Прошу прощения, это такой же вариант. +Невнимательно читал тему((({/post}{/quote} Присоединяюсь к "Невнимательно читал тему"
{quote}{login=PavelKs}{date=10.04.2010 01:31}{thema=}{post}dmdon, а может имеется в виду что если в В2 есть данные, то в С2 вводить нельзя, и наоборот если есть в С2 то в В2 - нельзя. Если да, то это наверное другая задача которую можно решить без vba условным форматированием.{/post}{/quote} Задачу Вы поняли правильно (это я надеюсь, так как сам так понял из последних объяснений), но условным форматированием Вы не сможете запретить ввод данных. Замаскировать - да. Вопрос к автору - мой последний файл задачу решает?
{quote}{login=The_Prist}{date=10.04.2010 01:45}{thema=}{post}Все остальные методы защиты можно обойти без проблем.{/post}{/quote}То есть фаталити? Ничего никак не запретишь?..
{quote}{login=The_Prist}{date=10.04.2010 02:39}{thema=Re: Re: }{post}{quote}{login=Serge 007}{date=10.04.2010 02:01}{thema=Re: }{post}То есть фаталити? Ничего никак не запретишь?..{/post}{/quote}А как? Макросы не устраивают, а другими методами нельзя запретить полностью...{/post}{/quote}Так и макросы отключить можно...
{quote}{login=Юрий М}{date=10.04.2010 01:48}{thema=Re: }{post}{quote}{login=PavelKs}{date=10.04.2010 01:31}{thema=}{post}dmdon, а может имеется в виду что если в В2 есть данные, то в С2 вводить нельзя, и наоборот если есть в С2 то в В2 - нельзя. Если да, то это наверное другая задача которую можно решить без vba условным форматированием.{/post}{/quote} Задачу Вы поняли правильно (это я надеюсь, так как сам так понял из последних объяснений), но условным форматированием Вы не сможете запретить ввод данных. Замаскировать - да. Вопрос к автору - мой последний файл задачу решает?{/post}{/quote} Братья, всем спасибо за поддержку!!! Мою задачу на все 100% точно изложил PavelKs (очень сильно извеняюсь за то, что я сам не смог кратко и точно сформулировать свой вопрос). Условным форматированием действительно не получится запретить ввод данных для моей задачи. Юрий М, спасибо Вам, Ваш последний файл к сожалению не помог в решении задачи.
Пока благодаря поддержки форумчан вижу одно направление решения моего задания: 1. Data--->Validation--->Закладка "Settings" Validation criteria Allow: "Custom" 2. В поле Formula: нам необходимо ввести логическую формулу примерного вида: ЕСЛИ в строках диаппазона ячеек (В2:В65536) есть данные, тогда Excel запрещает ввод данных в ячейки (C2:C65536), при условии ЕСЛИ вводимые данные совпадают в строках диаппазона (В2:С65536). Могу (если нужно) приложить скриншот и файл для наглядности...
{quote}{login=dmdon}{date=10.04.2010 03:09}{thema=Re: Re: }{post}{quote}при условии ЕСЛИ вводимые данные совпадают в строках диаппазона (В2:С65536).{/post}{/quote} При чём абсолютно не важен тип ввода данных (копированием или с клавиатуры) и содержимое вводимых данных.
{quote}{login=Useful}{date=10.04.2010 03:22}{thema=}{post}Try this way{/post}{/quote}Excuse, but it not that decision which is required... Try to copy cell В1 and to insert into any cell with validation. At you it will turn out. And the absolute prohibition is necessary. Without any possibility to bring the data in the blocked cells.