1

Мой код не работает, я пытаюсь вставить строку, нажав на гиперссылку, и моя гиперссылка я использую символ + ...

     ActiveSheet.Cells(1, 1).Value = "+"
       If ActiveSheet.Cells(1, 1) <> "" Then
         ActiveSheet.Hyperlinks.Add Anchor:=Cells(1, 1), _
         Address:=strString
       End If

Эта рабочая тетрадь .....

       Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
        If Target.Parent.Value = "+" Then Rows(Target.Parent.Row + 1).Insert
       End Sub

1 ответ1

0

Hyperlinks(1).Parent как диапазон
Hyperlinks(1).Parent.Parent как лист

Итак, ваш код должен быть:

With ActiveSheet
    .Cells(1, 1).Value = "+"
    '''No need to test as you fill it yourself
    .Hyperlinks.Add Anchor:=.Cells(1, 1), Address:=strString
End If

Листовой модуль:

Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
    If Target.Parent.Value = "+" Then _
        Target.Parent.Parent.Rows(Target.Parent.Row + 1).Insert CopyOrigin:=xlFormatFromRightOrBelow
End Sub

или короче:

Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
    If Target.Parent.Value = "+" Then _
        Me.Rows(Target.Parent.Row + 1).Insert CopyOrigin:=xlFormatFromRightOrBelow
End Sub

Я добавил параметр CopyOrigin , чтобы скопировать формат из строки ниже, чтобы избежать воспроизведения стиля гиперссылки во вновь вставленной строке!

CopyOrigin принимает любой из параметров, как указано ниже:

Const xlFormatFromLeftOrAbove = 0
Member of Excel.XlInsertFormatOrigin

а также

Const xlFormatFromRightOrBelow = 1
Member of Excel.XlInsertFormatOrigin

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