列C-Kが更新された日時を自動的に入力するために、列Bが必要なスプレッドシートがあります。 K以外の列には、更新コードをトリガしたくないものがあります。これは、行の変更のために更新されますので、これは私の状況では動作しませんでした範囲が更新されたときの日付入力用のVBAコード
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Integer
i = Target.Row
Dim t As String
t = VBA.Now
Cells(i, 2) = t
End Sub
:
は、まず私は、次のコードを使用していました。この利点は、ユーザーがこれらのセルを入力することができず、VBAが更新された日付を入力できなくなることでした。
だけで、選択した行のためのトリガーを有効にするには、私は次のコードに行ってきました:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim KeyCells As Range
Set KeyCells = Range("C6:K43")
If Not Application.Intersect(KeyCells, Range(Target.Address)) _
Is Nothing Then
Dim i As Integer
i = Target.Row
Dim t As String
t = VBA.Now
Cells(i, 2) = t
End If
End Sub
これは今、しかし、ユーザーともはや作品によって過入力することが可能です。
私はセルをロックしようとしましたが、その後VBAは動作しません。私もオフセット式を使用しようとしましたが、これはセルの範囲が1列以上あるためには機能しません。
私は私の髪を引き裂く前に任意の提案???
変更イベントハンドラ内からワークシートを更新する場合、更新を実行している間、あなたがイベントを無効にする必要があり、またはそれはあなたのコードを再トリガします:
は、以下のコードを試してみてください。 –
http://stackoverflow.com/questions/3037400/how-to-lock-the-data-in-a-cell-in-excel-using-vba私はこれがあなたを助けるかもしれないと思います。 –