3

Пожалуйста, позвольте мне лучше уточнить мой вопрос. Я хотел бы сделать следующее:
1) иметь рабочую тетрадь, скажем, со 100 листами
2) Каждый лист имеет свое имя вкладки
3) Каждый лист содержит диапазон ячеек, где я буду вводить записи, которые могут быть или не быть именем вкладки другого листа
4) Если мне удастся ввести имя вкладки одного из этих листов в любой ячейке, на любом листе, это имя автоматически будет гиперссылкой на этот лист, так что, нажав эту ячейку, я буду перенаправлен на этот лист. В этом рабочем листе назначения я могу сделать то же самое с ячейками и перенаправиться на другой рабочий лист и т.д., Переключаясь с одного рабочего листа на другой.

Есть идеи, как настроить диапазон ячеек таким образом?

Я знаю, что Excel автоматически создает гиперссылки в Интернете, когда запись в ячейке начинается с "http://" или "www." Можно ли это сделать, когда пункт назначения находится в том же документе, а не в Интернете?

Наиболее близким решением, которое мне удалось найти, является эта формула, введенная, например, в ячейку C3:

= ЕСЛИ (A3 = "P", HYPERLINK ("[Test.xlsx] Производство!D2 "," NEXT >>> "), HYPERLINK (" [Test.xlsx] Поставка!D2 "," СЛЕДУЮЩАЯ >>> "))

Если значение в ячейке A3 = P, и я щелкаю гиперссылку в ячейке C3, это приведет меня к ячейке D2 рабочего листа. Для любого другого значения в A3 я перейду к ячейке D2 рабочего листа.

Но это все еще не то, что я ищу. В моем случае я хотел бы иметь возможность ввести «Производство» в A3, преобразовать в интерактивную ссылку, так как это имя рабочего листа, и перенаправить на рабочий лист при нажатии на A3, а не в других ячейках.

Я изучил формулы IF, но они не могут выполнять никаких действий, кроме вычисления, копирования значений и т.д. Поэтому я полагаю, что мой единственный вариант - использовать VBA, что, к сожалению, не моя сильная сторона.

Любая помощь будет по достоинству оценена.

2 ответа2

1

Я верю, что коды VBA - лучший способ решить вашу проблему.

Теперь позвольте мне рассказать вам, как использовать этот код.

Это может быть использовано как Worksheet_Change или CommandButton_Click, Event или даже как макрос.

Теперь, что было бы лучше сделать, так это ввести в "Лист" в нескольких ЧЕТКИХ ЯЧКАХ "Имена листов", в моем примере адрес ячейки - "А2" вниз. Согласно "Событию Кодекса" VBA преобразует их в Гиперссылки.

Private Sub CommandButton1_Click()
    Dim i As Long
      With Sheets("Sheet1")
        For i = 2 To .Range("A" & .Rows.Count).End(xlUp).Row
         .Hyperlinks.Add Anchor:=.Range("A" & i), Address:="", _
           SubAddress:="'" & .Range("A" & i).Value & "'!A1", TextToDisplay:=.Range("A" & i).Value
          Next i
        End With
  End Sub

NB. Проверьте, что 4-я строка кода - для i = 2 To.Диапазон ("А" &.Ряды ,,,

Эти 2 - это номер строки и имя столбца A, означающие, что ячейка A2 является первой ячейкой, откуда начинается указанная область. Вы можете изменить это, как вам нужно.

Также я предлагаю сначала использовать код в качестве события нажатия кнопки.

Надеюсь, это поможет вам.

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

-1

Обратите внимание, добавив эти строки как ОТВЕТ, чтобы помочь ОП, по его предложению.

Выполните следующие действия, чтобы закончить работу.

  1. Перейдите на чистый лист, в ячейках A2 и A3 напишите свое имя листа, как Sheet1, Sheet2.
  2. Нажмите вкладку «Разработчик», найдите «Режим дизайна» и нажмите на нее.
  3. Слева от нее находится Вставка, щелкните ее, выберите командную кнопку и нарисуйте ее в любом месте пустой области листа.
  4. Дважды щелкните нарисованную командную кнопку, Excel откроет редактор VBA.
  5. Вы найдете строки CommandButton1_Click() и End Sub.
  6. Между копированием и вставкой кода. Не забудьте начать копировать как 2 и закончить строкой 8.
  7. Закройте окно редактора VBA и снова нажмите кнопку «Дизайн», все будет нормально.
  8. Наконец нажмите кнопку команды.

Имена листов в A2 и A3 превращаются в гиперссылки.

NB. Начиная с ячейки A2, вы можете записать как можно больше имен листов в столбце.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .