Создать гиперссылку на лист в ячейке VBA. Создать лист vba


Создать гиперссылку на лист в ячейке VBA

Я просмотрел множество сообщений и, похоже, не понимаю, как это правильно. У меня есть пользовательская форма, которая принимает кодовое имя, а затем создает лист с этим именем, а затем добавляет ссылку на новый лист в качестве последней ячейки в столбце B на другом листе. Я использовал 3 разных метода для вставки гиперссылки, но все они просто возвращают пустую ячейку, а если я изменяю значение на любую строку, она работает.

Dim sh As Worksheet Dim codename As String Dim lastrow As Long Dim cont As Worksheet On Error Resume Next Application.ScreenUpdating = False codename = InputBox("What is the codename?") Sheets("XXX").Visible = True Sheets("XXX").Copy After:=Worksheets("YYY") ActiveWindow.ActiveSheet.name = codename Sheets("XXX").Visible = False Worksheets(YYY).Activate lastrow = Sheets("YYY).Range("B" & Rows.Count).End(xlUp).Row + 1 ActiveSheet.Range("B" & lastrow).End(xlUp).Offset(1).Hyperlinks.Add Anchor:=ActiveCell, Address:="", SubAddress:=sh & "!A1", TextToDisplay:=codename ActiveSheet.Range("B" & lastrow).End(xlUp).Offset(2).Activate ActiveCell.Hyperlinks.Add Anchor:=ActiveCell, Address:="", SubAddress:=sh.name & "!A1", TextToDisplay:=codename ActiveSheet.Range("B" & lastrow).End(xlUp).Offset(3) = codename ActiveSheet.Range("B" & lastrow).End(xlUp).Offset(4).Hyperlinks.Add Anchor:=Sheets(codename).Cells(1, 1), _ Address:="", SubAddress:=sh, TextToDisplay:=codename Application.ScreenUpdating = True

Я знаю, что у меня есть 4 итерации, по существу, одно и то же. Дело в том, что независимо от того, использую ли я один из них или все 4, я получаю 3 пустых ячейки и (кодовое имя) в виде открытого текста, показывая, что я, очевидно, пропустил что-то легкое, что я для жизни меня не могу понять. Благодаря всем ответам.

stackoverrun.com

vba - Создать гиперссылку на лист в ячейке VBA

Я просмотрел много сообщений и, похоже, не понял этого. У меня есть пользовательская форма, которая принимает кодовое имя, а затем создает лист с этим именем, а затем добавляет ссылку на новый лист в качестве последней ячейки в столбце B на другом листе. Я использовал 3 разных метода для вставки гиперссылки, но все они просто возвращают пустую ячейку, а если я изменяю значение на любую строку, она работает.

Dim sh As Worksheet Dim codename As String Dim lastrow As Long Dim cont As Worksheet On Error Resume Next Application.ScreenUpdating = False codename = InputBox("What is the codename?") Sheets("XXX").Visible = True Sheets("XXX").Copy After:=Worksheets("YYY") ActiveWindow.ActiveSheet.name = codename Sheets("XXX").Visible = False Worksheets(YYY).Activate lastrow = Sheets("YYY).Range("B" & Rows.Count).End(xlUp).Row + 1 ActiveSheet.Range("B" & lastrow).End(xlUp).Offset(1).Hyperlinks.Add Anchor:=ActiveCell, Address:="", SubAddress:=sh & "!A1", TextToDisplay:=codename ActiveSheet.Range("B" & lastrow).End(xlUp).Offset(2).Activate ActiveCell.Hyperlinks.Add Anchor:=ActiveCell, Address:="", SubAddress:=sh.name & "!A1", TextToDisplay:=codename ActiveSheet.Range("B" & lastrow).End(xlUp).Offset(3) = codename ActiveSheet.Range("B" & lastrow).End(xlUp).Offset(4).Hyperlinks.Add Anchor:=Sheets(codename).Cells(1, 1), _ Address:="", SubAddress:=sh, TextToDisplay:=codename Application.ScreenUpdating = True

Я знаю, что у меня есть 4 итерации по существу то же самое. Дело в том, что независимо от того, использую ли я один из них или все 4, я получаю 3 пустых ячейки и (кодовое имя) в виде открытого текста, показывая, что я, очевидно, пропустил что-то легкое, что я для жизни меня не могу понять. Благодаря всем ответам.

источник поделиться

qaru.site

vba - Как использовать программно созданные функции рабочего листа в VBA

Существует ли функция "Регистрация" или "Повторная компиляция", прежде чем использовать программно созданные функции?

Когда я добавляю функцию на рабочий лист, я не могу использовать ее до тех пор, пока элемент управления не будет возвращен на рабочий лист.

Например: если мой код добавляет функцию в рабочий лист, а затем пытается использовать его, я получаю следующую ошибку: Ошибка времени выполнения 438 - Объект не поддерживает это свойство или метод Когда я смотрю на код для рабочих листов, функции есть, и если я запускаю код, который использует только созданные функции, ошибки не возникает.

Как я могу использовать функции сразу после их создания, не останавливаясь первым?

Вот пример кода - я получаю ошибку при запуске TestingWorkSheetFunctions, но не при запуске TestWorkSheetFunction после создания функций.

Пример предполагает новую книгу с не менее чем двумя листами (sheet1 и sheet2)

Option Explicit Public Sub TestingWorksheetFunction() AddWorkSheetFunction TestWorkSheetFunction End Sub Public Sub AddWorkSheetFunction() 'Sheet1 Function Dim strFunctionCode As String strFunctionCode = _ "Public Function HelloWorld() as string" & vbCrLf & _ vbCrLf & _ vbTab & "HelloWorld = ""Hello World from Sheet 1""" & vbCrLf & _ vbCrLf & _ "End Function" ThisWorkbook.VBProject.VBComponents(ThisWorkbook.Sheets("Sheet1").CodeName).CodeModule.AddFromString strFunctionCode 'Sheet2 Function strFunctionCode = _ "Public Function HelloWorld() as string" & vbCrLf & _ vbCrLf & _ vbTab & "HelloWorld = ""Hello World from Sheet 2""" & vbCrLf & _ vbCrLf & _ "End Function" ThisWorkbook.VBProject.VBComponents(ThisWorkbook.Sheets("Sheet2").CodeName).CodeModule.AddFromString strFunctionCode End Sub Public Sub TestWorkSheetFunction() Dim wsWorksheet1 As Object Set wsWorksheet1 = ThisWorkbook.Sheets("Sheet1") Dim wsWorksheet2 As Object Set wsWorksheet2 = ThisWorkbook.Sheets("Sheet2") MsgBox wsWorksheet1.HelloWorld() MsgBox wsWorksheet2.HelloWorld() End Sub источник поделиться

qaru.site