Добавление формулы в ячейку. Ошибка 1004 - PullRequest
0 голосов
/ 28 октября 2019

Я пытаюсь добавить форум в ячейки для создания гиперссылок, которые будут перемещаться между листами. Я продолжаю получать ошибку VBA Runtime Error 1004 Application-defined or Object-defined error из-за знака = в начале строки.

Вот мой код:

    Public strcelladdress As String
    Public hyperlink1 As String
    Public hyperlink2 As String
    Public hyperlinkfinal As String
    Public columnletter As String
    Public rngTarget As Range
    Public ADVICErow As Integer
    Public CALLrow As Integer
    Public TSHOOTcol As Integer

columnletter = Split(Worksheets("Troubleshooting Advice").Cells(ADVICErow, 1).Address, "$")(1)
columnletter = Right(columnletter, 1)
strcelladdress = columnletter + CStr(ADVICErow)
hyperlink1 = "HYPERLINK(""#'Troubleshooting Advice'!"
hyperlink2 = ",""Link to Troubleshooting Advice"")"
hyperlinkfinal = hyperlink1 + strcelladdress + hyperlink2
Set rngTarget = Worksheets("Call Examples").Cells(CALLrow, TSHOOTcol)
rngTarget.Formula = "=" + hyperlinkfinal

Что мне не хватает? Может кто-нибудь помочь, пожалуйста?

Ответы [ 2 ]

0 голосов
/ 30 октября 2019

Вот код, который работал для меня:

Sub AddHyperlinkA()

Dim targetsheet As String
Dim sht As Worksheet

Set sht = ActiveWorkbook.Sheets("Call Examples")
targetsheet = "Troubleshooting Advice"

    columnletter = "A"
    strcelladdress = columnletter + CStr(ADVICErowtarget)
    hyperlink1 = "'" & targetsheet & "'!" & strcelladdress
    hyperlink2 = "Link to Troubleshooting Advice"
    With sht
        .Hyperlinks.Add Anchor:=.Cells(CALLrow, TSHOOTcol), _
            Address:="", _
            SubAddress:=hyperlink1, _
            ScreenTip:=hyperlink2, _
            TextToDisplay:=hyperlink2
    End With
End Sub
0 голосов
/ 29 октября 2019

Похоже, вы используете глобальные публичные переменные. Давайте не будем этого делать, если сможем избежать этого.

Всегда используйте & для объединения строк в VBA. Используйте + только для математики. Таким образом, всем ясно, что вы пытаетесь сделать.

Вы жестко кодируете 1 в своем .cells уравнении, чтобы получить столбец, что странно, потому что вы можете просто объявить вместо него "A".

Давайте использовать объектную модель HyperLink VBA вместоформула ячейки.

ПРИМЕЧАНИЕ. Я не могу полностью проверить свой код вне вашей электронной таблицы.

Option Explicit

Public Sub AddFormulaToCell()
    Dim strcelladdress As String
    Dim hyperlink1 As String
    Dim hyperlink2 As String
    Dim hyperlinkfinal As String
    Dim columnletter As String
    Dim rngTarget As Range
    Dim ADVICErow As Integer
    Dim CALLrow As Integer
    Dim TSHOOTcol As Integer

    'columnletter = Split(Worksheets("Troubleshooting Advice").Cells(ADVICErow, 1).Address(True, False), "$")(0)
    'columnletter = Right$(columnletter, 1)
    columnletter = "A"
    strcelladdress = columnletter + CStr(ADVICErow)
    hyperlink1 = """#'Troubleshooting Advice'!" & strcelladdress & """"
    hyperlink2 = "Link to Troubleshooting Advice"
    With Worksheets("Call Examples")
        .Hyperlink.Add Anchor:=.Cells(CALLrow, TSHOOTcol), _
            Address:=hyperlink1, _
            ScreenTip:=hyperlink2, _
            TextToDisplay:=hyperlink2
    End With
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...