Здравствуйте, во вложении файл с описанием, извиняюсь, что картинка в файле плохого качества - здесь ограничение по размеру файла стоит. Пришлось картинку сжимать. Добавил одну просто картинку, чтобы было понятней. Спасибо всем, кто сможет найти решение!
ЗЫ: "Рабочий файл" можете не скачивать, он такой же, как и файл с описанием, но только без описания - там просто таблица. Я его прилдожил для удобства, а оказалось, что многим это наоборот неудобно.
novomaster, здравия. Поправьте меня, если я ошибаюсь. Т.е. Вы хотите, что бы в ячейках под красными полями автоматом в примечания добавлялся текст из этих ячеек при внесении в них (ячейки) изменений? --- И зачем два файла?
JayBhagavan, почти верно, но немного не так. Должно быть примерно так: в ячейках столбца, например, F, где находится "Дополнительная информация" у меня в оригинале сейчас я эту доп. информацию пишу непосредственно в ячейках. В связи с этим ячейка разрастается каждый день и становится слишком большой. При этом таблица теряет свою привлекательность (если вместе с ячейкой увеличивается высота строки) или не видно весь текст с доп. информацией (если строка не меняет свою высоту). Поэтому вместо всего текста с доп. информацией в ячейке будет одно слово "Дополнительно>>", нажав на которое (вернее на эту ячейку) рядом появляется окно (не стандартное примечание, а именно окно с возможностью дописывать сразу в нём текст), имеющее размер непосредственно позволяющий показать весь написанный текст.
А два файла - один с описанием задачи, а второй - рабочий - в котором можете пример сделать
novomaster, рассмотрите вариант с примечаниями. (в модуль листа)
Скрытый текст
Код
Private Sub Worksheet_Change(ByVal Target As Range)
Set rng_current = Intersect(Target, Range("C2:F" & Rows.Count))
If rng_current Is Nothing Then Exit Sub
Application.EnableEvents = False
Application.ScreenUpdating = False
For Each cl In rng_current
With cl
.ClearComments
If Len(.Text) > 0 Then
.AddComment
.Comment.Visible = False
.Comment.Text Text:=.Text
End If
End With
Next cl
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
Описанное Вами, думаю реализуемо, но не мной. Т.к. тут я имею смутное представление как это реализовать. Алгоритм более менее понятен. Допустим по двойному щелчку появляется форма с текстовым полем, которое заполняется информацией из скрытого/архискрытого листа по аналогичному адресу и внеся коррективы в которое, заполняем и яч. на скрытом листе. Если дублирующая яч. не пустая, то в текущую яч. заносим надпись "Дополнительно>>>" и т.п.
Формула массива (ФМ) вводится Ctrl+Shift+Enter Memento mori
Я тут подумал... А что, ели воспользоваться стандартными фигурами: Вкладка "Вставка">>"Фигуры">>"Прямоугольник, затем нарисовать его, выбрать нужное форматирование, потом нажать на него правой кнопкой мыши, выбрать пункт "Назначить макрос" и в этом макросе что-то такое написать, чтобы получилось так, как я задумал заранее?
novomaster написал: в ячейке будет одно слово "Дополнительно>>", нажав на которое (вернее на эту ячейку) рядом появляется окно (не стандартное примечание, а именно окно с возможностью дописывать сразу в нём текст), имеющее размер непосредственно позволяющий показать весь написанный текст.
Вариант: по событию Worksheet_SelectionChange в нужной ячейке отображаем ранее невидимый TextBox, куда и пишем нужную информацию. Ушли из ячейки - TextBox становится невидимым.
Нет - Вы ведь ничего не пишете про свойства ТекстБокса. Скопируйте в модуль нужного листа:
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("C2")) Is Nothing Then
Me.TextBox1.Visible = True
Else
Me.TextBox1.Visible = False
End If
End Sub
Контролируемая ячейка С2. Только, как говорил, JayBhagavan, нужно будет связать его с какой-нибудь ячейкой на скрытом листе - это самый простой способ хранения.
А у Вас есть на листе ТекстБокс с таким именем? Может там TextBox3, например )) удалите выделенный текст, после Ме напишите точку и букву t - какой там у Вас контрол? Посмотрите на примере моего файла.
На вкладке "Разработчик" нажимаю "Вставить" и выбираю "Поле (элемент ActiveX)", верно? Затем появляется крестик вместо курсора, я им рисую прямоугольник возле нужной ячейки, затем кликаю на него 2 раза, открывается окно для макроса и там я вставляю Ваш код:
Код
Private Sub TextBox1_Change()
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("C2")) Is Nothing Then
Me.TextBox1.Visible = True
Else
Me.TextBox1.Visible = False
End If
End Sub
Юрий М, вроде получилось, но возникает другой вопрос: в этом поле текст не переносится ни автоматически, ни кнопкой Enter, то есть весь текст размещается в одну длинную строку. Как это изменить?
If Not Intersect(Target, Range("C2:C10")) Is Nothing Then
И позиционировать ТекстБокс рядом с контролируемой ячейкой. И придётся программно ссылаться на ячейку скрытого листа с сохранённым текстом - записи ведь для каждой ячейки разные? Но мы ушли от темы )
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.ScreenUpdating = False
If Not Intersect(Target, Range("C2:C5")) Is Nothing And Target.Count = 1 Then
With Me.TextBox1
.Value = Target
.Visible = True
End With
Else
Me.TextBox1.Visible = False
End If
Application.ScreenUpdating = True
End Sub
И всё-таки я тупица. В пробном файле вроде начало получаться, попробовал в оригинале - не работает ((( Посмотрите? Я файл попробую приложить, если поместится Там в столбцах B, F, G и I, начиная с 8-й строки и до конца листа должны быть эти всплывающие ТекстБоксы. А данные для них - на листе "Данные", который потом скрою. Пробовал вставить туда Ваш код, поменяв диапазон - вообще ничего не получается. Может потому что там уже и так несколько модулей с макросами? (Кстати, там какие-то 4 пустых модуля, их можно удалять или не стоит? И если можно, то как они удаляются?
Юрий М, Ура! Для одного стобца получилось! Возникла проблемка: помните, выделяли цветом активную ячейку? Так вот, после того, как у меня получилось вставить код для ТекстБокса, одна из ячеек вдруг стала окрашенной в жёлтый цвет, независимо от того, активна она или нет. Если попробовать выделить ее и применить "без заливки", то не помогает - она всё равно желтая. Отчего этот баг произошел и как его исправить? Файл приложить не могу - он весит уже больше 100 Кб
И как сделать, чтобы в других столбцах тоже получились эти текстбоксы?