Страницы: 1
RSS
Создание кнопки на листах с ссылкой на лист "Оглавление"
 
Подскажите код макроса который бы создавал кнопку (скажем в ячейку A1) на всех листах книги с ссылкой на конкретный лист (назовем его "Оглавление").
Есть макросы создания листа с оглавлением, а вот с прописанными ссылками на этот лист нигде не встречал (кроме ручного прописывания с выделением всех листов)
 
А почему Вас не устроит в данном случае гиперссылка?
 
Я и имел ввиду ГИПЕРСЫЛКУ, но настроенную на кнопку. У меня на всех листах ячейка A1 занята надписью и кнопка бы лучше смотрелась. В любом случае самое главное это ссылка на лист Оглавление, а вот кнопка это или надпись второстепенно (но важно тоже...). На сколько мог, на столько и постарался объяснить. Я ЮЗЕР.
Изменено: RUS495_RUS495 - 24.02.2013 22:34:54
 
RUS495_RUS495, Вас не учили в детстве, что нужно читать п.4.2. Правил? :)
 
В ячейку А1 каждого нужного Вам листа (кстати как их определить? м.б. это все листы кроме листа "Оглавление"?) макросом можно будет поставить формулу
Код
=ГИПЕРССЫЛКА("[Книга11.xls]Оглавление!A1";"Оглавление")
.
Такой вариант подходит?
Да, вместо Книга11.xls нужно будет поставить имя Вашей книги!
Изменено: iba2004 - 24.02.2013 22:38:08
 
Как прописать формулой мне знакомо. Вопрос в том, как это сделать макросом и как выглядит этот код. Я уже пол дня потратил, но я в этом не разбираюсь.
Я хочу к известным макросам по созданию оглавления в книге добавить код дополнение - создание ссылки на этот лист "Оглавление", желательно в виде кнопки на каждом последующем листе.
 
Вот только моих знаний не хватает на то, как к созданным кнопкам "привязать" Макрос1, который будет нас возвращать на лист "Оглавление". М.б. знатоки помогут, а я с пользой для себя ознакомлюсь.
Спасибо!

Выложил конечный вариант, использовав помощь Виктора.
Да, и учтите, пжл, что лист "Оглавление" должен быть первым.
Если всё будет не так, то требуется дополнительная доработка.
Изменено: iba2004 - 25.02.2013 08:38:51
 
Код
Sub Макрос1()
    With Worksheets ("Оглавление")
        .Activate
        .Cells(1, 1).Select
    End With
End Sub

Sub Макрос2()
Dim i As Long
    For i = 2 To Sheets.Count
          Worksheets(i).Shapes.AddShape(msoShapeRoundedRectangle, 1, 1, 70, 15).OnAction = "Макрос1"
    Next i
End Sub
 
Спасибо Вам, Виктор!
Я уже, наверное, весь Интернет облазил. Извёлся совсем!!!
:)
 
Да, все ок. Спасибо. Получилось то, что нужно

Есть маленький момент... каждый раз кнопка создается новая и накладывается на предыдущую. Перед ее созданием неплохо было бы очистить это место от предыдущей кнопки...
 
Какой смысл в создании новых кнопок?
 
2 vikttur
Если я правильно "догоняю", то будут создаваться новые листы на которые будет необходимо проставлять кнопки. Вот тут-то и понадобится проверка. ТС, как мне видется, решил удалить старую и поставить новую, чтобы на одном листе их не было больше одной. Но ведь логичнее, ИМХО, проверить есть ли она. Или я неправ?
 
Как вариант:
Код
Sub Макрос2()
    Dim i%, iSh As Shape
    On Error Resume Next
    For i = 2 To Sheets.Count
        Set iSh = Worksheets(i).Shapes("К_оглавлению")
        If iSh Is Nothing Then
            Set iSh = Worksheets(i).Shapes.AddShape(msoShapeRoundedRectangle, 1, 1, 100, 25)
            iSh.Name = "К_оглавлению"
            iSh.TextFrame2.TextRange.Characters.Text = "К оглавлению"
            iSh.OnAction = "Макрос1"
        End If
        Set iSh = Nothing
    Next i
End Sub
Учимся сами и помогаем другим...
 
2 ber$erk
ЗдОрово, я до этого не "дошёл"!
2 RUS495_RUS495
Как я понял, даём кнопке имя "К_оглавлению" и ищем её на листе со всеми вытекающими. Только для выравнивания текста в кнопке по центру я бы добавил:

Код
Sub Макрос2()
    Dim i%, iSh As Shape
    On Error Resume Next
    For i = 2 To Sheets.Count
        Set iSh = Worksheets(i).Shapes("К_оглавлению")
        If iSh Is Nothing Then
            Set iSh = Worksheets(i).Shapes.AddShape(msoShapeRoundedRectangle, 1, 1, 100, 25)
            iSh.Name = "К_оглавлению"
            iSh.TextFrame2.TextRange.Characters.Text = "К оглавлению"
            iSh.TextFrame2.HorizontalAnchor = 2
            iSh.TextFrame2.VerticalAnchor = 2
            iSh.OnAction = "Макрос1"
        End If
        Set iSh = Nothing
    Next i
End Sub
 
Встречайте  8) - ОГЛАВЛЕНИЕ "МОНСТРИЛО" версии v1 :o
Собрал.
Прошу "доукрашать" если есть идеи. Хотелось бы ее в многофункциональную надстройку превратить.
 
1) добавить возможность указать ячейку на листах, куда вставлять ссылку на оглавление (сейчас это только A1)
2) добавить возможность выбора внешнего вида кнопки. И текста кнопки
Учимся сами и помогаем другим...
 
Сказать "спасибо" ber$erk'у за помощь и "проплюсовать" его посты! :о)))
И обратите, пжл, внимание на то, что "Макрос_ссылкиОглавление()" у Вас размещён на "Лист 1(Оглавление)". М.б. имеет смысл его перетащить в "ЭтаКнига"?
Изменено: iba2004 - 27.02.2013 07:41:31
 
Хочу пояснить, я совсем не силен в макросах и если у кого есть интересные решения, то сами создавайте и выкладывайте.
Тут уже специалисты нужны и их идеи.
Страницы: 1
Читают тему
Наверх