2016-06-28 17 views
0

以下のコードは、完了した各エントリのタイムスタンプを示すトリガ、列AとBに依存しますが、実行時エラー1004のポップアップを表示し続けます。ユーザー名を使用した開始時刻と終了時刻のタイムスタンプ

Private Sub Worksheet_Change(ByVal Target As Range) 
If Not Intersect(Target, Range("A2:B501")) Is Nothing Then 
Target.Offset(0, 12) = Now 
Target.Offset(1, 13) = Now 
Target.Offset(0, 14) = Environ("UserName") 

End If 
End Sub 

私はVBAをやっていて、うまくいけば皆さんが私を助けることができます。これを処理する

+0

コードはここからうまく動作しますが、どの行からエラーが発生していますか? –

+0

まあ、 "うまく" ...私はあなたの1004にreproを取得しないという意味です。列Aを編集すると列Oにユーザー名が入り、列Bを編集すると列Pにユーザー名が入れられますが、それはあなたのコードがとにかくやっていることです、それは動作します。 –

答えて

1

良い方法のようなものです:あなたはコーラとCOLBの両方を処理しているので、

Private Sub Worksheet_Change(ByVal Target As Range) 

    Dim rng As Range 

    Set rng = Application.Intersect(Target, Me.Range("A2:B501")) 
    'Work with "rng", not "Target", since Target might contain cells 
    ' outside of ColA or B... 
    If Not rng Is Nothing Then 
     'Target (and so rng) could contain multiple cells 
     ' so need to address them individually 
     For Each c In rng.Cells 
      'EDIT: 
      c.Offset(0, 12) = Now 'ColA >> M, ColB >> N 
      c.EntireRow.Cells(1, "O") = Environ("UserName") 
     Next c 

    End If 

End Sub 

ただしAとBからのオフセット範囲が

をオーバーラップされますので、あなたが値を上書きしてしまうかもしれチャンスがあります
+0

こんにちはティム、ありがとう!私の目的は、ファイルの開始時刻と終了時刻を持つことです。つまり、列Aでは、単に項目を入力するだけで、列Mに開始時刻スタンプがトリガーされ、同時にユーザー名を列Oに入れてから他の列を塗りつぶすと、最後のタイムスタンプはB列の項目によってトリガーされます。 –

+0

編集内容を参照してください。すべてがどこに向かうのかはっきりとは分かりません。なぜ行がオフセットされているのですか? –

+0

あなたの編集は完璧です。すべての助けてくれてありがとうTim!私はちょうどこのvbaのもので新しいです。私はテストと試して学習しています。 –

関連する問題