|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу. Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста". Название темы слишком короткое или не отражает сути вашего вопроса. Тема исчерпала себя, помните, один вопрос - одна тема Прочитайте правила и заново правильно создайте тему. |
|
Опции темы | Поиск в этой теме |
03.09.2008, 09:57 | #1 |
Регистрация: 03.09.2008
Сообщений: 6
|
Excel: Удаление графиков и картинок с листа
На листе имеется несколько картинок и графиков.
Можно ли каким-либо макросом удалить: - все картинки и графики - одновременнон все образовавшиеся пустые строки (занимаемые ранее этими картинками и графиками)? |
03.09.2008, 10:09 | #2 |
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
Удалить все объекты можно, например, так:
Код:
Чем шире угол зрения, тем он тупее.
|
03.09.2008, 10:41 | #3 |
Регистрация: 03.09.2008
Сообщений: 6
|
Я так полагаю, что перед уничтожением каждого объекта (картинки, графики) надо определить диапазон клеток (строки и столбцы), который занимает объект.
Если в строках данного диапазона "Пусто", значит в этих строках ничего нет и их можно уничтожить. Иначе уничтожаются только пустые строки из диапазона, занимаемого объектом. |
03.09.2008, 11:24 | #4 |
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
Так подойдет?
Код:
Чем шире угол зрения, тем он тупее.
Последний раз редактировалось SAS888; 04.09.2008 в 05:24. |
04.09.2008, 12:24 | #5 |
Регистрация: 03.09.2008
Сообщений: 6
|
SAS888, Большое спасибо за VBA-код.
Все заработало, правда не сразу. При запуске модуля вначале выдавалась ошибка "не определенная переменная объекта" при выполнении строки For Each Snp In ActivSheet.Shapes а затем (после добавления вами строки Application.ScreenUpdating = False) - и на ней. Но как оказалось, что эта ошибка присуща электронным таблицам в OpenOffice 4.2.1 Это уже у меня не первый случай в различиях и возможных проблемах при работе с электронными таблицами от Microsoft Excel при их использовании на OpenOffice. Мне так кажется, что OpenOffice не понимает Objekt и Shapes. На Microsoft Excel все идет нормально, а после введения вами строки Application.ScreenUpdating = False все стало намного быстрее удаляться и не мигает очередная удаляемая строка. Итак проблема решена - спасибо. Я не силен в VBA, и если можно - то несколько вопросов: 1. Правильно ли я понял: -переменные FirstR и LastR - это переменные куда записываются найденные координаты 1-й и последней строки диапазона, занимаемого картинкой? А каким образом вообще определяется размер картинки (высота на ширину) и соответственно требуемый для ее размещения диапазон клеток (строки и столбцы) Можно ли картинку (зная ее размер), поместить в одну строку (одна клетка или несколько) - предварительно расширив строку / клетку до нужного размера ? 2. Между двумя командами присвоения используетсся двоеточие : Означает ли это, что просто в одной строке использованы две команды присвоения FirstR = .TopLeftCell.Row : LastR = FirstR 3. Некоторые команды начинаются с точки, например: .TopLeftCell.Row .ShapeRange.Height .Delete означает ли это, что какой-то префикс может опускаться как умолчание? 4. Команды могут формироваться из нескольких ключевых слов. Где можно найти, например в помощи: - что и с чем сочетается, например .TopLeftCell.Row - т.е. предложение состоит из несколькох ключевых слов: верхняя - левая - ячейка . в текущей строке - и что м/б опущено перед точкой, например перед .Delete / .ShapeRange.Hight ? |
04.09.2008, 13:22 | #6 |
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
1. Адрес левого верхнего угла объекта на листе можно определить с помощью ActiveSheet.Shapes(1).TopLeftCell.A ddress. Соответственно номер строки: ActiveSheet.Shapes(1).TopLeftCell.R ow. Это и есть номер верхней строки, занимаемой объектом Shapes(1). Номер нижней строки я определяю так: организую цикл, в котором к высоте начальной строки прибавляю высоту следующей, до тех пор, пока эта величина не превысит высоту самого объекта. В каждом проходе цикла делается инкремент последней строки (LastR). По выходу из цикла переменная LastR будет содержать номер последней строки, занимаемой объектом Shaprs(1).
2. Знак ":" просто разделяет операторы, написанные в одной строке. 3 и 4. Команды, начинающиеся с точки - это использование метода With...End With. Везде, где между ними встречается точка, означает, что перед точкой то, что описано в With. (см. Help по VBA).
Чем шире угол зрения, тем он тупее.
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Удалить строку листа Excel при выполнении условия | Gennady | Microsoft Office Excel | 14 | 18.12.2007 13:54 |
как перенести данные с листа excel в текстовой фаил? | sergey34 | Microsoft Office Excel | 6 | 02.12.2007 22:59 |