基于非统一数据范围在2张纸之间链接数据

时间:2012-12-28 00:02:45

标签: excel vba hyperlink copy

我正在尝试在一张纸上获取非均匀范围的数据并将其链接起来(单元格将具有“= Sheet1!A1”,而不是硬编码值)到同一工作簿中的另一个工作表。

我不能只使用.UsedRange,因为我的选择中有很多空单元格,我不想链接到另一个工作表

到目前为止,这是我的代码,但是我收到一条错误消息,说你不能使用.copy这种选择。有人可以建议解决这个问题。谢谢。

Sub test()
Application.ScreenUpdating = False


ActiveSheet.UsedRange.SpecialCells(xlCellTypeConstants).Copy
With Sheets("Sheet2")
    .Activate
    .Range("A1").Select
    ActiveSheet.Paste Link:=True
End With


Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub

1 个答案:

答案 0 :(得分:0)

您可以逐个单元格迭代SpecialCells范围,并根据源单元格地址写入链接,如下所示

Sub test()
    Dim cl As Range
    Dim sh As Worksheet
    Dim ShName As String
    Dim OldCalc As XlCalculation

    Application.ScreenUpdating = False
    OldCalc = Application.Calculation
    Application.Calculation = xlCalculationManual

    Set sh = Worksheets("Sheet2")
    sh.Cells.Clear '<-- Optional
    ShName = "='" & ActiveSheet.Name & "'!"
    For Each cl In ActiveSheet.UsedRange.SpecialCells(xlCellTypeConstants)
        sh.Range(cl.Address).Formula = ShName & cl.Address
    Next

    Application.ScreenUpdating = True
    Application.Calculation = OldCalc
End Sub

虽然在一个范围内循环并不理想(由于速度),但在这种情况下它可能就足够了。

如果活动工作表为空,则此Sub将出错:您可能希望为此案例添加错误处理程序