Как прописать в макросе, чтобы значение ячейки было равно тексту из автофигуры Прямоугольник? А если Прямоугольник сгруппирован с другими фигурами, тогда как?
Здесь есть похожее (http://www.excelworld.ru/forum/3-647-1), но я не смог применить.
Покажите пожалуйста на моём примере.
Здравствуйте, уважаемые знатоки Excel!
Как прописать в макросе, чтобы значение ячейки было равно тексту из автофигуры Прямоугольник? А если Прямоугольник сгруппирован с другими фигурами, тогда как?
Здесь есть похожее (http://www.excelworld.ru/forum/3-647-1), но я не смог применить.
Попытался написать UDF - получился полный изврат. (Однако работает) Фигуру пришлось искать перебором, а текст вычленять из AlternativeText() По-другому что-то не выходит...
Общий заход мне представляется принципиально проблемным. Если привязывать текст не от фигуры к ячейке, а наоборот, от ячейки к фигуре - то и огород городить не придётся.
Попытался написать UDF - получился полный изврат. (Однако работает) Фигуру пришлось искать перебором, а текст вычленять из AlternativeText() По-другому что-то не выходит...
Общий заход мне представляется принципиально проблемным. Если привязывать текст не от фигуры к ячейке, а наоборот, от ячейки к фигуре - то и огород городить не придётся.Формуляр
Спасибо! Но худо-бедно работает только UDF из предыдущего поста. Всё время надо пересчитывать нажатием Ctrl+Alt+F9 (по F9 не работает).
Код из первых постов спотыкается также на строчке: Range("B2") = Selection.ShapeRange(1).TextFrame2.TextRange.Characters.Text
Вот так значение автоматом берётся из не сгруппированного текстового поля (в модуле листа): Sub Worksheet_SelectionChange(ByVal Target As Range) [B2] = ActiveSheet.DrawingObjects("Поле 1").Text End Sub
Но почему не работает так? [B2] = ActiveSheet.DrawingObjects("Прямоуг. 1").Text
Спасибо! Но худо-бедно работает только UDF из предыдущего поста. Всё время надо пересчитывать нажатием Ctrl+Alt+F9 (по F9 не работает).
Код из первых постов спотыкается также на строчке: Range("B2") = Selection.ShapeRange(1).TextFrame2.TextRange.Characters.Text
Вот так значение автоматом берётся из не сгруппированного текстового поля (в модуле листа): Sub Worksheet_SelectionChange(ByVal Target As Range) [B2] = ActiveSheet.DrawingObjects("Поле 1").Text End Sub
Но почему не работает так? [B2] = ActiveSheet.DrawingObjects("Прямоуг. 1").TextВлад
И у меня не пищит, но всё-равно не работает Пишет - ошибка 1004: Невозможно получить свойство DrawingObjects класса Worksheet
Вообще, мне непонятно, что за объект получается, если создаём Прямоугольник и чтобы в нём что-то написать, щёлкаем текстовое Поле - потом на Прямоугольнике. Тогда в прямоугольнике можно писать текст, но куда девается объект Поле?
Quote (RAN)
У меня работает и не пищит. (2007)
И у меня не пищит, но всё-равно не работает Пишет - ошибка 1004: Невозможно получить свойство DrawingObjects класса Worksheet
Вообще, мне непонятно, что за объект получается, если создаём Прямоугольник и чтобы в нём что-то написать, щёлкаем текстовое Поле - потом на Прямоугольнике. Тогда в прямоугольнике можно писать текст, но куда девается объект Поле?Влад
Может как-то по-проще, всё-таки? Например, как в Прямоуг. 2
Да, так, конечно проще, если надо, чтобы в автофигуре отображался текст из ячейки.
А когда надо наоборот, чтобы в ячейке отображался текст из автофигуры, да ещё сгруппированной, то как? Кроме UDF (от Формуляр) пока ничего рабочего нет.
И почему не работает в иодуле листа
Sub Worksheet_SelectionChange(ByVal Target As Range) [B2] = ActiveSheet.DrawingObjects("Прямоуг. 1").Text End Sub
Неужели у других работает?
Quote (Формуляр)
Может как-то по-проще, всё-таки? Например, как в Прямоуг. 2
Да, так, конечно проще, если надо, чтобы в автофигуре отображался текст из ячейки.
А когда надо наоборот, чтобы в ячейке отображался текст из автофигуры, да ещё сгруппированной, то как? Кроме UDF (от Формуляр) пока ничего рабочего нет.
И почему не работает в иодуле листа
Sub Worksheet_SelectionChange(ByVal Target As Range) [B2] = ActiveSheet.DrawingObjects("Прямоуг. 1").Text End Sub
Странно, если переименовываю автофигуру Прямоуг. 1 во что-либо другое, то тоже работает. Но с названиями Прямоуг. 1, Прямоуг.1, Прямоуг1 не работает. Только с Прямоуг и другими.
Как же всё-таки связать ячейку с автофигурой из группы?
Странно, если переименовываю автофигуру Прямоуг. 1 во что-либо другое, то тоже работает. Но с названиями Прямоуг. 1, Прямоуг.1, Прямоуг1 не работает. Только с Прямоуг и другими.
Как же всё-таки связать ячейку с автофигурой из группы? Влад
1. Чтобы автоматом извлекать в ячейку A1 надпись из автофигуры Прямоуг. 1, вставляем в модуль листа
Sub Worksheet_SelectionChange(ByVal Target As Range) [A1] = ActiveSheet.Shapes("Прямоуг. 1").OLEFormat.Object.Text End Sub
2. Чтобы автоматом извлекать в ячейку A1 надпись из автофигуры Поле 1, входящей в состав сгруппированных автофигур Группа 1, вставляем в модуль листа
Sub Worksheet_SelectionChange(ByVal Target As Range) x = ActiveSheet.Shapes("Группа 1").GroupItems("Поле 1").AlternativeText [A1] = Replace(x, "Подпись: ", "") End Sub
3. Чтобы автоматом вставлять в надпись автофигуры Прямоуг. 1 (сгруппированной или нет) значение из ячейки A1, выделяем Прямоуг. 1 и в строке формул пишем =A1
1. Чтобы автоматом извлекать в ячейку A1 надпись из автофигуры Прямоуг. 1, вставляем в модуль листа
Sub Worksheet_SelectionChange(ByVal Target As Range) [A1] = ActiveSheet.Shapes("Прямоуг. 1").OLEFormat.Object.Text End Sub
2. Чтобы автоматом извлекать в ячейку A1 надпись из автофигуры Поле 1, входящей в состав сгруппированных автофигур Группа 1, вставляем в модуль листа
Sub Worksheet_SelectionChange(ByVal Target As Range) x = ActiveSheet.Shapes("Группа 1").GroupItems("Поле 1").AlternativeText [A1] = Replace(x, "Подпись: ", "") End Sub
3. Чтобы автоматом вставлять в надпись автофигуры Прямоуг. 1 (сгруппированной или нет) значение из ячейки A1, выделяем Прямоуг. 1 и в строке формул пишем =A1
Для 2007 нашел ошибку в Sub MakeArray() Отсутствовал On Error resume Next перед строкой Arr(n, 1) = Shp.TextFrame.Characters.Text - выдавал ошибку для фигур не имеюших этого свойства. исправил вложение...
Для 2007 нашел ошибку в Sub MakeArray() Отсутствовал On Error resume Next перед строкой Arr(n, 1) = Shp.TextFrame.Characters.Text - выдавал ошибку для фигур не имеюших этого свойства. исправил вложение...VovaK
Всем удачи. У нас все получится. С уважением, Владимир.
Сообщение отредактировал VovaK - Понедельник, 12.09.2011, 21:16