2017-02-07 1 views
-3

Здравствуйте, я пытаюсь написать макрос, который отправляется в ссылочную ячейку в формуле. Так, например, если у нас есть следующая формула:Код VBA, который отправляется в ссылочную ячейку

=IF(Sheet2!C3="","",Sheet2!C3) 

Я хочу, чтобы макрос отвел меня в Sheet2 C3. Так что я нашел этот код, благодаря вам, ребята:

Dim rLast As Range, iLinkNum As Integer, iArrowNum As Integer 
    Dim stMsg As String 
    Dim bNewArrow As Boolean 
    Application.ScreenUpdating = False 
    ActiveCell.ShowPrecedents 
    Set rLast = ActiveCell 
    iArrowNum = 1 
    iLinkNum = 1 
    bNewArrow = True 
    Do 
     Do 
      Application.Goto rLast 
      On Error Resume Next 
      ActiveCell.NavigateArrow TowardPrecedent:=True, ArrowNumber:=iArrowNum, LinkNumber:=iLinkNum 
      If Err.Number > 0 Then Exit Do 
      On Error GoTo 0 
      If rLast.Address(external:=True) = ActiveCell.Address(external:=True) Then Exit Do 
      bNewArrow = False 
      If rLast.Worksheet.Parent.Name = ActiveCell.Worksheet.Parent.Name Then 
       If rLast.Worksheet.Name = ActiveCell.Parent.Name Then 
        ' local 
        stMsg = stMsg & vbNewLine & Selection.Address 
       Else 
        stMsg = stMsg & vbNewLine & "'" & Selection.Parent.Name & "'!" & Selection.Address 
       End If 
      Else 
       ' external 
       stMsg = stMsg & vbNewLine & Selection.Address(external:=True) 
      End If 
      iLinkNum = iLinkNum + 1 ' try another link 
     Loop 
     If bNewArrow Then Exit Do 
     iLinkNum = 1 
     bNewArrow = True 
     iArrowNum = iArrowNum + 1 'try another arrow 
    Loop 
    rLast.Parent.ClearArrows 
    Application.Goto rLast 
    MsgBox "Precedents are" & stMsg 

    Exit Sub 

Range("stMsg").Select 
Selection.Goto 

И переменная содержит имя ячейки. Как я могу заставить макрос перейти к нему? Формат название 'Лист2' $ C $ 3

+0

Что вы пробовали. Stack Overflow - это не код для меня или покажите мне сайт кода. –

+0

Да, я знаю и прошу прощения. Просто не знаю, с чего начать. – tombata

+1

Вам нужно будет проанализировать строку формулы: 'Selection.Formula', используя Left, Right и/или Mid, с Instr, чтобы найти определенные символы, такие как'! ' –

ответ

0

Как об этом:

With Range("'Sheet2'!$C$3") 
    .Parent.Activate 
    .Activate 
End With 

Вы можете заменить 'Sheet2'!$C$3 с адресом вы нашли в ваш макрос.

+0

Переменная stMsg, но это не отправляет меня в ячейку Sheet2 C3 , – tombata

+1

Он меня посылает :) –

0

Для этого случая в конкретных:

Dim rng As Range 
Dim tmp As String 

tmp = Right(Selection.Formula, Len(Selection.Formula) - InStrRev(Selection.Formula, ",")) 
Set rng = Range(Left(tmp, Len(tmp) - 1)) 
Смежные вопросы