#excel #vba
#excel #vba
Вопрос:
полностью новичок в VBA, был бы признателен за помощь в решении следующей проблемы:
В настоящее время используется Sub GoFC()
в модуле для гиперссылки фигур на листе («Меню») на другие скрытые листы (фигуры и текст на листе совпадают)
Я хотел бы использовать Sub GoFC()
для фигур на более чем одном листе, но код ссылается только на один лист по имени. Другими словами, я хочу, чтобы на рабочем листе «Меню» и на рабочем листе «Menu2» разрешалось запускать один и тот же макрос для всех фигур в них.
Я искренне надеюсь, что это имеет смысл.
Это код в модуле:
Sub GoFC()
shtName=Sheets("Menu").Shapes(Application.Caller).TextFrame2.TextRange.Text
Sheets(shtName).Visible = True
Application.Goto Sheets(shtName).Range("A1")
End Sub
Это код в «Меню» рабочего листа:
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
Dim shtName As String
'shtName = Target.Name
If InStr(1, Target.SubAddress, "'") = 1 Then
Sh = Mid(Target.SubAddress, 2, Len(Target.SubAddress) - 5)
Else
Sh = Left(Target.SubAddress, InStr(1, Target.SubAddress, "!") - 1)
End If
Sheets(Sh).Visible = True
Sheets(Sh).Select
End Sub
Ответ №1:
Может быть, вот так
Sub GoFC()
Dim sht As Worksheet
Dim wb As Workbook
Dim shtName As String
Set wb = ActiveWorkbook
Set sht = wb.ActiveSheet
shtName = sht.Shapes(Application.Caller).TextFrame2.TextRange.Text
If Not wsExists(shtName, wb) Then wb.Sheets.Add.Name = shtName
wb.Sheets(shtName).Visible = True
wb.Sheets(shtName).Activate
wb.Sheets(shtName).Range("A1").Select
End Sub
Function wsExists(wsName As String, wb As Workbook) As Boolean
Dim ws
For Each ws In wb.Sheets
wsExists = (wsName = ws.Name): If wsExists Then Exit Function
Next ws
End Function
Комментарии:
1. Привет, спасибо за быстрый ответ. Я пробовал это, но это останавливается на shtName = sht . Фигуры (Приложение. Вызывающий объект).TextFrame2.TextRange. Текст, содержащий информацию, элемент не найден. Есть идеи?
2.
.TextFrame2.TextRange.Text,
возможно, такого атрибута нет. показать файл3. Эй, эта часть кода также присутствовала в исходном коде и работала отлично
4. Как вы используете GoFC ()? с какой страницы?