粘贴值在宏中是硬编码的

时间:2014-12-30 11:10:11

标签: excel-vba copy-paste hardcoded vba excel

首先,我想要的结果是连接两个单元格以创建超链接。一个单元格具有我们的票证管理系统的Web地址,另一个单元格具有票证号码。这两个单元格存在于双击数据透视表的DrillDown工作表中,其源数据确实已经具有超链接,但它没有通过钻取工作表,而且我已在多个论坛上阅读它不可能让它通过。

所以我记录了连接的宏,然后使用连接的粘贴值到另一个单元格并进行回车并使它成为超链接。繁荣!干完了吗?

不,当我在其他一些数据上测试录制的宏时,它会正确地连接所有内容,但是当它到达粘贴值位时,它会粘贴我正在处理的先前数据的值吗?

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

由于 Ĵ

1 个答案:

答案 0 :(得分: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

我已经丢弃了所有的中间列以及几乎所有的选择和复制。此公式只是将E3中的最后5个字符连接到URL的末尾,并使用E3的全文作为要单击的链接文本