Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 08.05.2008, 11:13   #21
kievlyanin
Форумчанин
 
Регистрация: 21.04.2008
Сообщений: 110
По умолчанию

Цитата:
Сообщение от kievlyanin Посмотреть сообщение
кстати единственное что я бы еще тут хотел изменить - так это гиперссылки ... неудобно .. курсор на них западает ... если бы это как-то перевести на обычную клавишу.




Sub Ìàêðîñ1()
ActiveSheet.Shapes(1).TopLeftCell.S elect
End Sub


Sub Ìàêðîñ1()
ActiveSheet.Shapes(1).BottomRightCe ll.Select
End Sub

вот!
kievlyanin вне форума
Старый 08.05.2008, 11:39   #22
kievlyanin
Форумчанин
 
Регистрация: 21.04.2008
Сообщений: 110
По умолчанию

Sub Макрос1()
ActiveSheet.Shapes(Application.Call er).BottomRightCell.Select
End Sub


Sub Макрос2()
ActiveSheet.Shapes(Application.Call er).TopLeftCell.Select
End Sub

ыы-ы-ы--ыы-ыыыыыы
kievlyanin вне форума
Старый 08.05.2008, 12:05   #23
kievlyanin
Форумчанин
 
Регистрация: 21.04.2008
Сообщений: 110
По умолчанию

блин!

если удалять строки например с 5-й по 10-ю и где-то посередине есть кнопка, то она не удаляется!!! ... как заставить удалять и кнопку???

код на удаление:

Range(Rows(r), Rows(i + 1)).Delete

Последний раз редактировалось kievlyanin; 08.05.2008 в 12:06. Причина: уточнение
kievlyanin вне форума
Старый 10.05.2008, 16:01   #24
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Чтобы кнопка удалялась, в контекстном меню нужной кнопки войти в Формат объекта->Свойства и выбрать опцию "Перемещать и изменять объект вместе с ячейками".
Средствами VBA это делается так:
Код:
ActiveSheet.Shapes("Button 1").Placement = xlMoveAndSize
Чем шире угол зрения, тем он тупее.
SAS888 вне форума
Старый 12.05.2008, 10:39   #25
kievlyanin
Форумчанин
 
Регистрация: 21.04.2008
Сообщений: 110
По умолчанию

Цитата:
Сообщение от SAS888 Посмотреть сообщение
Чтобы кнопка удалялась, в контекстном меню нужной кнопки войти в Формат объекта->Свойства и выбрать опцию "Перемещать и изменять объект вместе с ячейками".
Средствами VBA это делается так:
Код:
ActiveSheet.Shapes("Button 1").Placement = xlMoveAndSize


так и есть - но все равно при удалении ячеек кнопки остаются.
kievlyanin вне форума
Старый 12.05.2008, 11:02   #26
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Что значит остаются?
Если все так, то кнопки не будет видно на экране. После удаления строки (ячейки) к которой "прикреплена" кнопка, остается "нулевой" объект. Т.е. он существует, но его не видно. Для полного удаления объекта нужно обращаться к нему по имени, или по порядковому номеру. Что при Вашей организации рабочего листа невозможно.
Именно поэтому, я предложил такой вариант, недостаток которого то, что количество этих "нулевых" объектов будет расти, и, следовательно, будет расти и объем файла. Через некоторое время работы (при значительном увеличении размера файла), его можно "почистить" вручную, т.е. выделить все Shapes листа и удалить ненужные.
Есть еще вариант с доп. столбцом (лучше скрытым), в соответствующую строку которого будет записываться, например, Name или Index создаваемого объекта. Тогда при удалении соответствующих строк можно будет считывать имя (номер) объекта и удалять его корректно.
Если такой вариант устроит - прикрепите файл (фрагмент файла) с уже существующими макросами.
Чем шире угол зрения, тем он тупее.
SAS888 вне форума
Старый 12.05.2008, 11:05   #27
kievlyanin
Форумчанин
 
Регистрация: 21.04.2008
Сообщений: 110
По умолчанию

нашел тут один примерчик и пытаюсь его передалть для своих целей. но что-то напутал в лгических функиях - чтото там не контачит:

Sub testme3()
Dim myCell As Range, myShape As Shape
Set myCell = Range(Rows(1), Rows(50))
For Each myShape In ActiveSheet.Shapes
If Intersect(myShape.TopLeftCell, myCell) Then myShape.Delete
Next
End Sub
kievlyanin вне форума
Старый 12.05.2008, 11:09   #28
kievlyanin
Форумчанин
 
Регистрация: 21.04.2008
Сообщений: 110
По умолчанию

Цитата:
Сообщение от SAS888 Посмотреть сообщение
Что значит остаются?
Если все так, то кнопки не будет видно на экране. После удаления строки (ячейки) к которой "прикреплена" кнопка, остается "нулевой" объект. Т.е. он существует, но его не видно. Для полного удаления объекта нужно обращаться к нему по имени, или по порядковому номеру. Что при Вашей организации рабочего листа невозможно.
Именно поэтому, я предложил такой вариант, недостаток которого то, что количество этих "нулевых" объектов будет расти, и, следовательно, будет расти и объем файла. Через некоторое время работы (при значительном увеличении размера файла), его можно "почистить" вручную, т.е. выделить все Shapes листа и удалить ненужные.
Есть еще вариант с доп. столбцом (лучше скрытым), в соответствующую строку которого будет записываться, например, Name или Index создаваемого объекта. Тогда при удалении соответствующих строк можно будет считывать имя (номер) объекта и удалять его корректно.
Если такой вариант устроит - прикрепите файл (фрагмент файла) с уже существующими макросами.

да вот с этим я и пытаюсь побороться - есть тут один вариант:

For Each z In ActiveSheet.Shapes
z.Delete
Next

это удаляет все кнопки на листе .. я сейчас хочу удалять только в области таблицы (область у меня известна) .. т.е. первым действием удалить кнопки, вторымсаму таблицу.
kievlyanin вне форума
Старый 12.05.2008, 12:24   #29
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Можно еще так:
Если все кнопки ссылаются на один и тот же макрос, то в начале этого макроса поместить:
Код:
Dim Sh As Shape, MyShName As String
    MyShName = Application.Caller
Это позволит запомнить Characters.Text кнопки, которая вызвала макрос.
В конце макроса вставить
Код:
For Each Sh In ActiveSheet.Shapes
        Sh.Select
        If Selection.Characters.Text = MyShName Then
            Sh.Delete: Exit For
        End If
    Next
Что удалит объект с таким Characters.Text.
Т.е. какую кнопку нажали - та и удалится после выполнения макроса.
Чем шире угол зрения, тем он тупее.
SAS888 вне форума
Старый 12.05.2008, 12:32   #30
kievlyanin
Форумчанин
 
Регистрация: 21.04.2008
Сообщений: 110
По умолчанию

"" Т.е. какую кнопку нажали - та и удалится после выполнения макроса ""


не пойдет.

мне надо не 1 кнопку удалить а группу кнопок расположенную в области Range(Rows(r), Rows(i + 1))

тах их будет пять и нажата будет только одна из них.
kievlyanin вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Объеденение 2-х таблиц Stanislav БД в Delphi 3 28.07.2008 09:44
Сведение таблиц Funky_man Microsoft Office Excel 1 09.01.2008 07:20
Сведение таблиц Funky_man Microsoft Office Excel 1 08.01.2008 03:36
Копирование таблиц из одной базы в другую KuH БД в Delphi 7 27.09.2007 15:18