2014-12-30 3 views
-1

Во-первых, мой желаемый результат - объединить две ячейки для создания гиперссылки. У одной ячейки есть веб-адрес нашей системы управления билетами, а другой номер билета. Эти две ячейки существуют на листе DrillDown двойной таблицы с двойным щелчком, исходные данные которой уже имеют гиперссылку, но она не переносится на лист детализации и, поскольку я читал на нескольких форумах, это невозможно. заставляйте его тянуть.значения пасты жестко закодированы в макросе

Итак, я записал макрос конкатенации, а затем использовал значения вставки конкатената в другой ячейке и сделал возврат каретки, и это сделало его гиперссылкой. Boom! Работа выполнена?

Нет, когда я проверил записанный макрос на некоторых других данных, он выполнил все конкатенации правильно, но когда он добрался до бит значений вставки, он вставил значения предыдущих данных, над которыми я работал?

Есть ли способ в VBA, чтобы заставить его копировать и вставлять значение выбранной ячейки, а не то, что было жестко запрограммировано во время записи макроса?

Извините, если это кровотечение очевидно, но я не эксперт VBA ... далеко от него.

Sub CreateHyperlink() 
' 
' CreateHyperlink Macro 
' 

' 
Columns("A:D").Select 
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove 
Range("D3").Select 
ActiveCell.FormulaR1C1 = "=RIGHT(RC[1],5)" 
Range("A3").Select 
ActiveCell.FormulaR1C1 = _ 
    "=CONCATENATE(""=HYPERLINK(""""http://test.analytics.com/workspace/379/item/"",RC4,"""""""","","","" "","""""""",RC5,"""""""","")"")" 
Range("A4").Select 
Columns("A:A").EntireColumn.AutoFit 
Range("B3").Select 
ActiveCell.FormulaR1C1 = "=RIGHT(RC[-1],LEN(RC[-1])-0)" 
Range("B3").Select 
Columns("B:B").EntireColumn.AutoFit 
Range("B3").Select 
Selection.Copy 
Range("C3").Select 
Application.CutCopyMode = False 
ActiveCell.FormulaR1C1 = "" 
Range("B3").Select 
Selection.Copy 
Range("C3").Select 
Application.CutCopyMode = False 
ActiveCell.FormulaR1C1 = "" 
Range("B3").Select 
Selection.Copy 
Range("C3").Select 
ActiveSheet.Paste 
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
    :=False, Transpose:=False 
Application.CutCopyMode = False 
ActiveCell.FormulaR1C1 = _ 
    "=HYPERLINK(""http://test.analytics.com/workspace/379/item/55949"", ""INQ-55949"")" 
Range("C4").Select 
Columns("C:C").EntireColumn.AutoFit 
End Sub 

Благодаря J

ответ

2

Все может быть немного упрощен:

Sub CreateHyperlink() 
' 
' CreateHyperlink Macro 
' 

' Move everything four columns to the right 
Columns("A:D").Select 
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove 

' Create the hyperlink by adding the last 5 characters of the ticket number and then use the full ticket number. The full ticket number is in cell E3 
Range("C3").FormulaR1C1 = _ 
    "=HYPERLINK(CONCATENATE(""http://test.analytics.com/workspace/379/item/"",RIGHT(RC[2],5)),RC[2]) 
Range("C4").Select 
Columns("C:C").EntireColumn.AutoFit 

End Sub 

Я отбрасываются все промежуточные колонны и почти все выделения и копирования. Эта формула просто объединяет последние 5 символов в E3 в конце URL-адреса и использует полный текст E3 в качестве текста ссылки, который нужно нажать на

+0

Спасибо, что он отлично работает. – jellybean1977