Страницы: 1 2 След.
RSS
Запрет ввода одинаковых данных в ячейки с одинаковой заливкой?
 
Доброго времени суток!    
Хотел бы у Вас поинтересоваться. Задача стоит такая, в таблице идет один столбец, в него вводятся числовые данные, типа 123, иногда вводятся 123,567. Все ячейки заливаются двумя цветами, допустим зеленый и желтый, задача состоит в том чтобы ограничить ввод одинаковых данных именно в желтых ячейках, в зеленых могут повторяться.    
Если кто что подскажет, буду благодарен!  
Спасибо!
 
Сделать можно. Выложите свой файл - чтобы я смог "привязать" Ваши цвета к макросу.
Киса, я хочу Вас спросить, как художник — художника: Вы рисовать умеете?
 
{quote}{login=Arsenno}{date=04.11.2012 05:40}{thema=Запрет ввода одинаковых данных в ячейки с одинаковой заливкой?}{post}... в таблице идет один столбец... Все ячейки заливаются двумя цветами, допустим зеленый и желтый, задача...{/post}{/quote}  
Задача одна (логика подсказывает): не один, а два столбца - 1 - для зелени, 2 - для цыплячьего цвета... Почему НЕ?!. ;) -17867-
 
{quote}{login=LightZ}{date=04.11.2012 05:43}{thema=}{post}Сделать можно. Выложите свой файл - чтобы я смог "привязать" Ваши цвета к макросу.{/post}{/quote}  
файла сейчас нет под рукой( можете код макроса выложить, а потом я код цвета в него сам пропишу? ведь можно так?  
Спасибо.
 
{quote}{login=Z}{date=04.11.2012 05:46}{thema=Re: Запрет ввода одинаковых данных в ячейки с одинаковой заливкой?}{post}{quote}{login=Arsenno}{date=04.11.2012 05:40}{thema=Запрет ввода одинаковых данных в ячейки с одинаковой заливкой?}{post}... в таблице идет один столбец... Все ячейки заливаются двумя цветами, допустим зеленый и желтый, задача...{/post}{/quote}  
Задача одна (логика подсказывает): не один, а два столбца - 1 - для зелени, 2 - для цыплячьего цвета... Почему НЕ?!. ;) -17867-{/post}{/quote}  
в том и загвоздка, что столбец один и цвета в нем разные(
 
Arsenno, так ведь необязательно выкладывать файл-оригинал. Просто сделайте маленький пример.
Киса, я хочу Вас спросить, как художник — художника: Вы рисовать умеете?
 
{quote}{login=LightZ}{date=04.11.2012 06:06}{thema=}{post}Arsenno, так ведь необязательно выкладывать файл-оригинал. Просто сделайте маленький пример.{/post}{/quote}  
вот допустим число 200 повторяется и в желтом цвете и в зеленом, как сделать так чтобы в зеленом можно было повторы, а в желтом нет?  
Заранее благодарен!
 
Макрос помещаете в лист, на котором будете делать свои расчеты  
 
Public lCol&, lFinalRow&, i&  
Public oDict As Object  
Private Sub Worksheet_Change(ByVal Target As Range)  
   If Target.Interior.ColorIndex = 6 Then  
       lCol = Target.Column  
       lFinalRow = Cells(Rows.Count, lCol).End(xlUp).Row  
       Set oDict = CreateObject("scripting.dictionary"): oDict.CompareMode = 1  
       For i = 1 To lFinalRow  
           If Not Cells(i, lCol).Value = "" And Cells(i, lCol).Interior.ColorIndex = 6 Then  
               If Not oDict.exists(CStr(Cells(i, lCol).Value)) Then  
                   oDict.Add CStr(Cells(i, lCol).Value), CStr(Cells(i, lCol).Value)  
               Else  
                   With Application  
                       .EnableEvents = False: .Undo: .EnableEvents = True  
                   End With  
                   Set oDict = Nothing: Exit Sub  
               End If  
           End If  
       Next  
   End If  
End Sub
Киса, я хочу Вас спросить, как художник — художника: Вы рисовать умеете?
 
{quote}{login=LightZ}{date=04.11.2012 06:46}{thema=}{post}Макрос помещаете в лист, на котором будете делать свои расчеты  
 
Public lCol&, lFinalRow&, i&  
Public oDict As Object  
Private Sub Worksheet_Change(ByVal Target As Range)  
   If Target.Interior.ColorIndex = 6 Then  
       lCol = Target.Column  
       lFinalRow = Cells(Rows.Count, lCol).End(xlUp).Row  
       Set oDict = CreateObject("scripting.dictionary"): oDict.CompareMode = 1  
       For i = 1 To lFinalRow  
           If Not Cells(i, lCol).Value = "" And Cells(i, lCol).Interior.ColorIndex = 6 Then  
               If Not oDict.exists(CStr(Cells(i, lCol).Value)) Then  
                   oDict.Add CStr(Cells(i, lCol).Value), CStr(Cells(i, lCol).Value)  
               Else  
                   With Application  
                       .EnableEvents = False: .Undo: .EnableEvents = True  
                   End With  
                   Set oDict = Nothing: Exit Sub  
               End If  
           End If  
       Next  
   End If  
End Sub{/post}{/quote}  
толи я тупой, толи лыжи не едут(    
не удается записать макрос, после копирования кода и закрытия редактора макросов, запись останавливается, а в списке макросов пусто(    
Заранее благодарен. Офис 2010 у меня.
 
Может, сохраняете в формате xlsx? надо с поддержкой макросов xlsm.
 
{quote}{login=ShAM}{date=05.11.2012 09:22}{thema=}{post}Может, сохраняете в формате xlsx? надо с поддержкой макросов xlsm.{/post}{/quote}  
попробовал и так. все равно не выходит( или туплю с утра
 
1. >> после копирования кода и закрытия редактора макросов, запись останавливается  
Что это должно означать?  
2. Private Sub в списке макросов появиться не может.  
3. Private Sub Worksheet_Change(ByVal Target As Range) отслеживает события листа, и из окна макросов не запускается.
 
{quote}{login=RAN}{date=05.11.2012 10:59}{thema=}{post}1. >> после копирования кода и закрытия редактора макросов, запись останавливается  
Что это должно означать?  
2. Private Sub в списке макросов появиться не может.  
3. Private Sub Worksheet_Change(ByVal Target As Range) отслеживает события листа, и из окна макросов не запускается.{/post}{/quote}  
извиняюсь за глупость, это мне адресовано или автору макроса?  
Заранее благодарен!
 
>>после копирования кода и закрытия редактора макросов, запись останавливается, а в списке макросов пусто<<  
А это кто писал? Тому и адресовано.
 
Ну конечно автору!  
Он-же даже и не дагадывается, что написал. -:)
 
{quote}{login=RAN}{date=05.11.2012 11:12}{thema=}{post}Ну конечно автору!  
Он-же даже и не дагадывается, что написал. -:){/post}{/quote}  
ждем автора макроса.
 
Arsenno, про какую "запись макроса" Вы говорите? Ничего записывать не нужно - макрос УЖЕ написан. Его просто нужно скопировать в модуль листа.
 
{quote}{login=Юрий М}{date=05.11.2012 08:55}{thema=}{post}Arsenno, про какую "запись макроса" Вы говорите? Ничего записывать не нужно - макрос УЖЕ написан. Его просто нужно скопировать в модуль листа.{/post}{/quote}  
Чтобы код вставить, нужно перейти на вкладку Вид, выбрать макросы, там выбрать "Запись макроса", щелкнуть Ок. Откроется окно ввода кода, копирую туда код, закрываю редактор, и ничего?    
Что я делаю не так?  
Заранее благодарен!
 
Правый клик по ярлычку листа - Исходный текст. И ТУДА - в модуль листа - копируем.
 
Советую почитать эту статью:  http://www.excel-vba.ru/chto-umeet-excel/chto-takoe-modul-kakie-byvayut-moduli/
 
Arsenno, откройте пример, который я выложил в предыдущем посте.  
Нажмите Альт+Ф11 и с левой стороны найдите "Лист1" - там и будет спрятан макрос.  
Скопируйте его в тоже место, только в свою книгу (в нужный лист).  
 
to RAN - зачем всех путать? %)
Киса, я хочу Вас спросить, как художник — художника: Вы рисовать умеете?
 
{quote}{login=LightZ}{date=05.11.2012 11:26}{thema=}{post}Arsenno, откройте пример, который я выложил в предыдущем посте.  
Нажмите Альт+Ф11 и с левой стороны найдите "Лист1" - там и будет спрятан макрос.  
Скопируйте его в тоже место, только в свою книгу (в нужный лист).  
 
to RAN - зачем всех путать? %){/post}{/quote}  
спасибо) прогресс пошел, но в желтые ячейки он вообще не дает никакие значениея вводить( Если не сложно, может быть TeamViewer?  
Заранее благодарен!
 
имхо, отсутствие всяческого понятия об иронии говорит оч.много о человеке.  
я, конечно, надеюсь на лучшее, но. боюсь, Богдан, Вам еще пару раз придётся объяснить - что, куда и как :)
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
Не, не охота.  
Можете выслать мне на почту файл с подробным описанием проблемы, что делаете - что не получается.  
Будет время - гляну.  
overseerpower@gmail.com
Киса, я хочу Вас спросить, как художник — художника: Вы рисовать умеете?
 
{quote}{login=LightZ}{date=05.11.2012 11:37}{thema=}{post}Не, не охота.  
Можете выслать мне на почту файл с подробным описанием проблемы, что делаете - что не получается.  
Будет время - гляну.  
overseerpower@gmail.com{/post}{/quote}  
странно. сейчас на работе попробовал на 2007 офисе, действительно все работает, одинаковые в желтые не дает вводить, дома на 10 офисе, любые не дает(    
а как вы выполнили именно привязку по цвету, чтобы мне код оставить, но цвет сменить?  
Заранее благодарен!
 
{quote}{login=Arsenno}{date=06.11.2012 12:18}{thema=Re: }{post}{quote}{login=LightZ}{date=05.11.2012 11:37}{thema=}{post}Не, не охота.  
Можете выслать мне на почту файл с подробным описанием проблемы, что делаете - что не получается.  
Будет время - гляну.  
overseerpower@gmail.com{/post}{/quote}  
странно. сейчас на работе попробовал на 2007 офисе, действительно все работает, одинаковые в желтые не дает вводить, дома на 10 офисе, любые не дает(    
а как вы выполнили именно привязку по цвету, чтобы мне код оставить, но цвет сменить?  
Заранее благодарен!{/post}{/quote}  
вижу ColorIndex = 6, но как взять соответствие по другим цветам по номерам, поставил 4, в желтые стали заносится все значения)  
Заранее благодарен
 
Узнать индекс можно при помощи макрорекордера, записав заливку ячейки нужным цветом. Если хотите получить весь "список", выполните этот макрос:  
Sub qqq()  
   For i = 1 To 56  
       Cells(i, 1).Interior.ColorIndex = i  
   Next  
End Sub  
Номер строки будет соответствовать индексу.
 
{quote}{login=Юрий М}{date=06.11.2012 01:02}{thema=}{post}Узнать индекс можно при помощи макрорекордера, записав заливку ячейки нужным цветом. Если хотите получить весь "список", выполните этот макрос:  
Sub qqq()  
   For i = 1 To 56  
       Cells(i, 1).Interior.ColorIndex = i  
   Next  
End Sub  
Номер строки будет соответствовать индексу.{/post}{/quote}  
Спасибо) Автору макроса отдельное спасибо, и всем принявшим участие также спасибо от меня)    
значит я не такой и глупый конечно, разница только в 7 и 10 офисе. странно)
 
Не за что.  
А разницы в версиях офиса не должно быть, возможно у Вас просто отключены макросы или ещё какие-то нюансы.  
ps. т.к. у меня работает в 2007 и в 2010
Киса, я хочу Вас спросить, как художник — художника: Вы рисовать умеете?
 
{quote}{login=LightZ}{date=06.11.2012 10:52}{thema=}{post}Не за что.  
А разницы в версиях офиса не должно быть, возможно у Вас просто отключены макросы или ещё какие-то нюансы.  
ps. т.к. у меня работает в 2007 и в 2010{/post}{/quote}  
Снова здраствуйте) если Вас не затруднит, то можно как привязать ограничение к столбцу? Т.е. в таблице на листе идет не один столбец, как писал в шапке (извиняюсь), а много столбцов, но залиты строчки желтым, вот как бы сделать так, чтобы например в столбце С нельзя было в желтых ячейках вводить одинаковые значения, а в соседнем В с такой же заливкой и эта же строчка, значения могли повторяться.    
Заранее благодарен за оказанную помощь.
Страницы: 1 2 След.
Читают тему
Наверх