【问题标题】:paste values are hardcoded in macro粘贴值在宏中硬编码
【发布时间】:2014-12-30 11:10:10
【问题描述】:

首先,我想要的结果是连接两个单元格以创建一个超链接。一个单元格有我们的票务管理系统的网址,另一个单元格有票号。这两个单元格存在于双击数据透视表的 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

谢谢 J

【问题讨论】:

    标签: excel copy-paste hardcoded vba


    【解决方案1】:

    事情可以简化一点:

    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 的全文作为要点击的链接文本

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-05
      • 1970-01-01
      相关资源
      最近更新 更多