2016-08-30 4 views
0

Рабочая тетрадь, над которой я работаю, используется для отслеживания проекта. На начальной странице это текущая страница проектов &. Когда вы нажмете кнопку управления формой, он выполнит приведенный ниже код. Что делает код ниже, читается через каждый лист в книге (имеет 30 листов), а затем все листы, имеющие значение «Проект №:» в A5. Когда он имеет это значение, он будет помещать заданные значения в указанную строку и столбец. Строка с «**» в начале - это та, которая не работает. Строка под ним с «*» рядом с ней - это то, что я временно использую, но у нее нет гиперссылки, просто имя листа.Excel код VBA для гиперссылки на другие листы

То, что я хочу, чтобы это произошло в коде ниже, это сделать строку «A» содержит листы имена в виде текста и гиперссылки на этот лист

For Each ws In ThisWorkbook.Worksheets 
      If ws.Range("A5") = "Project # :" And ws.Range("E16") = "" Then 
       x = .Range("B" & Rows.Count).End(xlUp).Offset(1).row 

       **.Cells(x, "A").Formula = "=ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:= _'" & ws.Name & "'" 
       *.Cells(x, "A").Value = ws.Name 'classifying number 

       .Cells(x, "B").Formula = "='" & ws.Name & "'!$B$5" 'Project # 
       .Cells(x, "C").Formula = "='" & ws.Name & "'!$A$1" 'Project Name 
       .Cells(x, "D").Formula = "='" & ws.Name & "'!$B$8" 'Project Engineer 
       .Cells(x, "E").Formula = "='" & ws.Name & "'!$B$11" 'In-service Due 
       .Cells(x, "F").Formula = "='" & ws.Name & "'!$E$6" '30% Due 
       .Cells(x, "G").Formula = "='" & ws.Name & "'!$F$13" '30% Success 
       .Cells(x, "H").Formula = "='" & ws.Name & "'!$E$7" '60% due 
       .Cells(x, "I").Formula = "='" & ws.Name & "'!$F$14" '60% Success 
       .Cells(x, "J").Formula = "='" & ws.Name & "'!$E$8" '90% due 
       .Cells(x, "K").Formula = "='" & ws.Name & "'!$F$15" '90% Success 
       .Cells(x, "L").Formula = "='" & ws.Name & "'!$E$5" 'Material Forecast due date 
       .Cells(x, "M").Formula = "='" & ws.Name & "'!$F$11" 'Materials Forecast Success 
       .Cells(x, "N").Formula = "='" & ws.Name & "'!$B$15" 'Non Stores Items 
       .Cells(x, "O").Formula = "='" & ws.Name & "'!$B$16" 'Non Stores Items Ordered on time 
       .Cells(x, "P").Formula = "='" & ws.Name & "'!$A$17" 'Non Stores Items Success 
      End If 
     Next 

    End With 

ответ

0

Вместо

.Cells(x, "A").Formula = "=ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:= _'" & ws.Name & "'" 

использование

.Hyperlinks.Add Anchor:=.Cells(x, "A"), _ 
       Address:="", _ 
       SubAddress:= "'" & ws.Name & "'!A1", _ 
       TextToDisplay:= ws.Name 

Я предположил, что ваш код выполняется в пределах With ActiveSheet (или эквивалент ent).

+0

Это прекрасно! Я пытался понять это на какое-то время, большое спасибо! –

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