我正在尝试在一张纸上获取非均匀范围的数据并将其链接起来(单元格将具有“= 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
答案 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
将出错:您可能希望为此案例添加错误处理程序