2015-11-17 2 views
0

Код, который я пытаюсь сделать, состоит из 2 частей. Первая часть, которую мне удалось сделать, но мне сложно определить вторую часть.автоматически ссылается на командную кнопку на значение ячейки

Первая часть: в текстовом поле вы заполнить номер проекта (например, 211), командная кнопка затем запускает макрос и заполняет это число в новой строке, создает таблицу с именем 211 (в пределах рабочей книги) и добавляет новую командную кнопку рядом с номером проекта.

Итак, идея состоит в том, что на главном листе есть целый список с номерами проектов, а рядом с каждым номером есть командная кнопка, которая идет на соответствующий рабочий лист. Таким образом, может легко быть 50 номеров проектов, 50 командных кнопок и 50 листов. Это код:

Dim MySheetName As String 
Set pasteSheet = Worksheets("Mainsheet") 
Dim aRange As Range 

Dim sValue As Variant, findMe As Range, sWhere As Range 
sValue = TextBox1.Value 
Set sWhere = Range("B4:B700") 
Set findMe = sWhere.Find(What:=sValue, After:=sWhere(1)) 

If findMe Is Nothing Then 

LastRow = pasteSheet.Cells(pasteSheet.Rows.Count, "B").End(xlUp).Row 
    Worksheets("Mainsheet").Range("B" & LastRow + 1).Value = TextBox1.Value 

With Worksheets("Mainsheet") 
    .CommandButton1.Copy 
    .Range("B" & LastRow + 1).Offset(0, 3).Select 
    .Paste 
End With 

Unload Me 

Sheets("Copysheet").Copy After:=Sheets("Copysheet") 
    Range("C3") = TextBox1.Value 
    ActiveSheet.Name = TextBox1.Value 

Else 
    Unload Me 
    MsgBox "Number already exists" 
End If 

Worksheets("Mainsheet").Activate 
Range("A1").Value = 1 

Вторая часть: Эта часть является для меня загадка. Теперь я хочу, чтобы каждая сгенерированная кнопка команды включала код, который автоматически переключается на рабочий лист.

E.g. если я создаю новый номер проекта 214 (автоматически заполненный ячейкой B5), кнопка команды в ячейке C5 выполняет поиск в ячейке B5 и переходит на этот рабочий лист. Если я сделаю еще один проект с именем 215 (в ячейке B6), командная кнопка в C6 проверит значение в B6 и т. Д. И так далее ...

Любая помощь приветствуется, спасибо.

+0

Посмотрите на это: http://stackoverflow.com/a/9038809/4628637 Вам нужно создать класс, чтобы иметь возможность создавать элементы управления со встроенным кодом для событий! – R3uK

+0

Я никогда раньше не работал с классами, посмотрю на это позже, спасибо. –

ответ

1

Вместо того, чтобы использовать кнопку, простым решением может быть размещение гиперссылки в столбце C вместо этого.

With Worksheets("Mainsheet") 
    '.CommandButton1.Copy 
    '.Range("B" & LastRow + 1).Offset(0, 3).Select 
    '.Paste 
    .Range("B" & LastRow + 1).Offset(0, 3).Select 
    .Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:= _ 
     projectNo & "!A1", TextToDisplay:="Link" 
End with 

Один важный момент в том, что вы также должны переместить раздел, где вы создаете новый лист до этого раздела, чтобы избежать ошибки при попытке создать гиперссылку.

+1

Этот трюк, это другой способ, но мне он нравится. Я изменил небольшую часть: ** projectNo ** dirrectly by ** Textbox1.value **. Спасибо за ваше время, это сэкономило много времени! –