Создание гиперссылки для ячейки, найденной функцией FIND - PullRequest
0 голосов
/ 14 февраля 2019

Я написал VBA-код для поиска слова в «Sheet1».Список слов есть в «Лист2».Результаты публикуются в «Sheet3» вместе со словом и адресами всех ячеек слова, найденного в «Sheet1».

Например, адреса ячеек публикуются как "$ B $ 26".Я хочу, чтобы это была гиперссылка на ячейку B26 листа 1.

Я использовал приведенный ниже код.

Worksheets("Sheet3").Activate

'Record the address of the data, in the current workbook.

     With ThisWorkbook.ActiveSheet.Range("D2")
        .Value = "Address of variable:"
        .Offset(0, -1).Value = "Variable Name"
        .Offset(0, -2).Value = "No of usages"
        .Offset(i, 0).Value = GCell.Address
        .Offset(i, -1).Value = Txt
        .Columns.AutoFit
        .Offset(i, 1).Columns.AutoFit

If GCell Is Nothing Then Exit Sub

    Sheets("Sheet3").Hyperlinks.Add Anchor:=Sheets("Sheet3").Cells(i,0), _
         Address:="", _
         SubAddress:="'" & Sheets("Sheet1").Name & "'!" & GCell.Address, TextToDisplay:="Click"

Я получаю

Ошибка времени выполнения '1004': ошибка приложения или объекта

в строке выше.GCell - диапазон, в котором найдено слово.

1 Ответ

0 голосов
/ 14 февраля 2019

Проблема здесь .Cells(i,0).

Нумерация строк / столбцов начинается с 1, а не 0, поэтому столбец 0 не существует, поэтому вы получаете сообщение об ошибке.Также убедитесь, что i равно >0.


. И я настоятельно рекомендую избегать использования .Activate и ActiveSheet вместо ссылки на ваши рабочие листы по их именам.Вам может пригодиться чтение Как избежать использования Select в Excel VBA .

Этот…

Worksheets("Sheet3").Activate
With ThisWorkbook.ActiveSheet.Range("D2")

можно записать как…

With ThisWorkbook.Worksheets("Sheet3").Range("D2")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...