1

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 に答える