3

保護されたシートに表示されているセルのみをコピーするように、ctrl + c を置き換えようとしています。この問題を解決しようとして、私はこの投稿に出くわしました(vba Excelは、キーを押して表示されているセルのみをコピーします ctrl+c

次のコード (Siddharth-Rout が推奨) は機能しますが、保護されていないシートに対してのみ機能します。

Private Sub Workbook_Open()
     Application.OnKey "^c", "Copy"
End Sub

Sub Copy()
    Dim rng As Range

    On Error GoTo Whoa

    If Not Selection Is Nothing Then
        Set rng = Selection.Cells.SpecialCells(xlCellTypeVisible)
        rng.Copy
    End If

LetsContinue:
    Exit Sub
Whoa:
    MsgBox Err.Description, vbCritical, "Error Number : " & Err.Number
    Resume LetsContinue
End Sub

保護を解除し、コピーしてから再保護しようとしましたが、コピーが削除されます。最終シートを保護する必要があります。どんな助けでも大歓迎です。

4

1 に答える 1

5

ああ!過去からの爆発:P

コピーする直前に、保護を解除して保護する必要があります。またActiveSheet、デモ目的で使用しています。必要に応じて、それを関連するシートに変更します。

これはあなたがしようとしていることですか?

Sub Copy()
    Dim rng As Range
    Dim MyPassword As String

    '~~> Change password as applicable
    MyPassword = "Sid"

    On Error GoTo Whoa

    If Not Selection Is Nothing Then
        ActiveSheet.Unprotect MyPassword
        Set rng = Selection.Cells.SpecialCells(xlCellTypeVisible)
        ActiveSheet.Protect MyPassword

        rng.Copy
    End If

LetsContinue:
    Exit Sub
Whoa:
    MsgBox Err.Description, vbCritical, "Error Number : " & Err.Number
    Resume LetsContinue
End Sub
于 2013-10-15T18:22:03.120 に答える