VBA: добавление гиперссылки на лист в ячейку - PullRequest
0 голосов
/ 21 февраля 2019

Моя цель - при добавлении новой строки я хочу связать ячейку из последней строки + 1 в первом столбце с листом, имя которого совпадает с именем значения.Т.е. добавляется новый клиент с идентификатором 130 и создается лист с тем же именем.Теперь я хочу добавить ссылку с идентификатором клиента на лист.Данные извлекаются из ввода пользовательской формы.Возможно, я должен отметить, что эта подпрограмма запускается после нажатия кнопки команды в моей пользовательской форме.

При использовании кода ниже я получаю ошибку в последней строке ActiveCell.Hyperlinks.Add Anchor:=ActiveCell, Address:="", SubAddress:=Sheets(cs_sht), TextToDisplay:=cs_sht Где я получаю ошибку '5 Неправильная процедура или аргумент' .Я попытался поработать с привязкой, используя с выделением и без него, а также изменив лист и привязку на activecell.

Private Sub CB_NewCS_Click()
'Copying data to table

Dim rng As Range
Dim LastRow As Long
Dim cs_sht As String
Dim ws As Worksheet
Dim Ws_K As Worksheet

NewCS.Hide

' Setting ranges and sheets
Set rng = Sheets("Kundeliste").ListObjects("Tabel_Kunde").Range
Set Ws_K = Sheets("Kundeliste")

' Searching for new input line
LastRow = rng.Find(What:=Ó * Ó, _
After:=rng.Cells(1), _
Lookat:=xlPart, _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious, _
MatchCase:=False).Row

' Inserting userform data
With rng.Parent
    .Cells(LastRow + 1, 1).Value = Application.WorksheetFunction.Max(rng.Columns(1)) + 1 ' Customer ID in ascending order
    .Cells(LastRow + 1, 2).Value = TB_Firstname.Value ' First name
    .Cells(LastRow + 1, 3).Value = TB_Lastname.Value ' Last name
    .Cells(LastRow + 1, 4).Value = TB_Phone.Value ' Phone number
    .Cells(LastRow + 1, 5).Value = TB_Address.Value ' Address
    .Cells(LastRow + 1, 6).Value = TB_Housenr.Value ' House / road number
    .Cells(LastRow + 1, 7).Value = TB_Floornr.Value ' Floor nr.
    .Cells(LastRow + 1, 8).Value = TB_Zipcode.Value ' Zipcode / postal code
    .Cells(LastRow + 1, 9).Value = TB_City.Value ' City / town
    .Cells(LastRow + 1, 10).Value = LB_Product.Value ' Product for the customer
    ' Checkbox values:
    .Cells(LastRow + 1, 12).Value = -Chb_Contact.Value
    .Cells(LastRow + 1, 13).Value = -Chb_Meet1.Value
    .Cells(LastRow + 1, 14).Value = -Chb_Accept.Value
    .Cells(LastRow + 1, 15).Value = -Chb_Meet2.Value
    .Cells(LastRow + 1, 16).Value = -Chb_Revision.Value
    .Cells(LastRow + 1, 17).Value = -Chb_Contact2.Value
    .Cells(LastRow + 1, 18).Value = -Chb_Followup.Value
    cs_sht = .Cells(LastRow + 1, 1).Value
End With

With ThisWorkbook
    Set ws = .Sheets.Add(After:=.Sheets(.Sheets.Count))
    ws.Name = cs_sht
End With
Ws_K.Activate
Ws_K.Range(Ws_K.Cells(LastRow + 1, 1), Ws_K.Cells(LastRow + 1, 1)).Select
' OBS OBS OBS ERROR OCCURS HERE vvvvvvvv
ActiveCell.Hyperlinks.Add Anchor:=ActiveCell, Address:="", SubAddress:=Sheets(cs_sht), TextToDisplay:=cs_sht


End Sub

Ответы [ 2 ]

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

Подадрес должен быть строкой, ссылающейся на ячейку, поэтому вам понадобится что-то вроде этого

SubAddress:=cs_sht & "!A1"

Макро-рекордер полезен для разработки синтаксиса такого типа.

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

Вам нужно что-то в форме:

SubAddress: = somestring

, например:

SubAddress:= "Sheet2!B9"

Строка представляет комбинацию ячеек листа.

...