2016-04-28 2 views
0

В принципе, я хочу создать что-то вроде индекса, я хочу связать каждый лист, который я создаю, с первой страницей, которую я назвал Main, пытался записать некоторые макросы, а затем работать с ними, но я понимаю я понятия не имею, как работать с vb, так как я не могу заставить его работать, так как у меня мало знаний в java, я думал, что могу что-то сделать. Редактировать: Моя идея состоит в том, чтобы автоматически добавлять страницы, которые я создаю в индекс (столбец), когда я создаю такой лист, не, создавая индекс «после», заканчивая все листы. Пытался закрепить страницу, как только я ее создал, и «создать» рабочий лист, как только я набрал что-то в ячейку из определенной строки. Любые идеи, как я могу заставить его работать? вот мои две попытки дерьма.Хотите создать рабочие листы в excel автоматически

Sub Sheetcreation() 
    If (Sheets.Add(After)) = True Then [ Main.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:= _ 
    "Hoja1!A1", TextToDisplay:=(SheetName) ] [ Else [ ] ] 
End Sub 

Sub Sheetcreate() 
    Principal.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:= _ 
    "Hoja1!A1", TextToDisplay:=(SheetName) 
End Sub 

Заранее благодарен, ребята, хорошо провести день.

+0

У Debra Dagleish есть много информации о гиперссылках. Вот код, который делает то, что вы хотите: http://www.contextures.com/excelhyperlinkfunction.html#tocvba –

+0

Спасибо! Я проверю его сразу. –

ответ

0

Поместите этот код в модуль для листа вы хотите, чтобы ваши ссылки на проживание в:

Private Sub Worksheet_Change(ByVal Target As Range) 
    If Target.Column = 1 And Target.Value <> "" Then Call Module1.SheetCreation(Target.Value, Target.Item(1)) 
End Sub 

Затем поместите этот код в качестве дополнительного модуля:

Sub SheetCreation(n As String, r As Range) 
    ' Create the sheet 
    Worksheets.Add(After:=Worksheets(Worksheets.Count)).Name = n 
    r.Parent.Activate 

    ' Add hyperlink 
    r.Parent.Hyperlinks.Add _ 
     Anchor:=r, _ 
     Address:="", _ 
     SubAddress:="'" & n & "'!A1", _ 
     TextToDisplay:=n 
End Sub 

Вы заметите, что если вы изменяете имя процедуры или если ваш модуль не назван «Module1», вам придется соответствующим образом изменить код в Worksheet_Change.

После добавления кода и изменения при необходимости вы можете ввести значения в столбец A выбранного вами листа. Затем код создаст новый лист с именем после введенного значения, а затем создаст гиперссылку на этот лист.

+0

Этот выглядит довольно интересно, и на самом деле я его понимаю, но по какой-то причине не может его вызвать. должен ли я дать ему метод быстрого доступа? Еще спасибо. –

+0

Кажется, что единственной недостающей частью в коде была = True до того, она творит чудеса! –

+0

Должно быть, что-то фанки с вашим Excel, '= True' абсолютно не требуется. Мне это удалось, я проверил его примерно с 15 различными ссылками. Но если вы нашли способ заставить его работать, это все, что имеет значение :) – Vegard

Смежные вопросы