Добрый день. Задача простая: в заданном диапазоне ячеек при вводе значения в одну из них все остальные - пустые. Но вот для ее решения у меня фантазии не хватает. Пробовал через подсчет пустот, но я не могу заменить значение в ячейке на формулу. Ячейки активные. Возможно ли как то задать дополнительные условия для ячеек, например, в другом листе?? Спасибо за внимание.
Во вложение проект документа. В ячейках, выделенных оранжевым цветом, необходимо при вводе значения в одну из них - делать пустой ячейку, заполненную ранее.
excited, то что Вы хотите, формулами не сделать. Но можно ограничить количество значений вводимых в диапазон. Больше одного значения в строке в массива B19:G24 не введете.
Bema написал: то что Вы хотите, формулами не сделать
но можно макросом, если excited не против Макрос для модуля листа
Код
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rng As Range, cl As Range, temp As Range
Dim i As Byte
Set rng = Union([B3:F3], [B10:G10], [B19:G24])
Set temp = Intersect(Target, rng)
If temp Is Nothing Then GoTo er
Application.EnableEvents = 0
For i = 1 To rng.Areas.Count
Set temp = Intersect(Target, rng.Areas(i))
If Not temp Is Nothing Then
For Each cl In rng.Areas(i)
If cl.Address <> Target.Address Then cl.ClearContents
Next cl
End If
Next i
er:
Application.EnableEvents = 1
End Sub
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
OFF: Bema, да я в продолжение ваших слов тип "формулами нельзя…" но можно макросом ясен красен вы в курсе - да ещё и покороче код бы предложили и побыстрее
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
For i = 1 To rng.Areas.Count
If Not Intersect(Target, rng.Areas(i)) Is Nothing Then
TVal = Target
rng.Areas(i).ClearContents
Target = TVal
End If
Next i
или совсем
Код
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rng As Range, RN As Range
Dim TVal
Set rng = Union([B3:F3], [B10:G10], [B19:G24])
If Not Intersect(Target, rng) Is Nothing Then
Application.EnableEvents = 0
For Each RN In rng.Areas
If Not Intersect(Target, RN) Is Nothing Then
TVal = Target
RN.ClearContents
Target = TVal
End If
Next
End If
Application.EnableEvents = 1
End Sub
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄