1

我试图在一张纸上获取非统一范围的数据并将其链接(单元格将具有“=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
4

1 回答 1

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将出错:您可能需要为这种情况添加错误处理程序

于 2012-12-28T02:28:54.990 回答