2017-10-29 8 views
0

私は特定のExcelマクロを使用して、抽出前に手動でデータを貼り付けています。Excel VBAはワークシート内の特定の範囲を貼り付けることを禁止します

マクロ実行中のエラーを避けるために、特定の列にデータを貼り付けることを無効にしたいとします。

私は、誰かがそれが可能であるどのように私を導くことができる

Private Sub Worksheet_Change(ByVal Target As Range) 
    Target.Column = 7 
    Target.Column = 8 
    Target.Column = 12 
End Sub 

てみましたか?

+2

はい、 'Worksheet_Change'イベントに関する読み取り、誰かが' Target.Column = 2'ならば、チェックの内部に、(この例の)列「B」に貼り付けしようとされ、ペースト手順を無効にするロック –

+0

セルを制限してワークシートを保護する – jsotola

+0

@ShaiRado私はこれのためにプライベートサブを作成する必要があることがわかりますが、ペーストは**マクロ実行前**です。新しいサブを作成せずにコントロールする方法はありますか?私はそれがファイルが開かれたときにアクティブになりますしたい –

答えて

3

次のコードを試して、ワークシートに追加して、ユーザーが特定の列に貼り付けるのを無効にします。

Private Sub Worksheet_Change(ByVal Target As Range) 

' Restrict the user from deleting or Pasting to certain columns 

Select Case Target.Column 
    Case 7, 8, 12 
     With Application 
      .EnableEvents = False 
      .Undo 
      MsgBox "Pasting to columns 'F' , 'G' or 'L' is not allowed", vbCritical 
      .EnableEvents = True 
     End With 

    Case Else 
     ' do nothing/or something else 

End Select 

End Sub 
関連する問題