Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


9002 / 13644 ツリー ←次へ | 前へ→

【29733】時間取得に関して りん 05/10/12(水) 19:59 質問[未読]
【29734】Re:時間取得に関して Hiro 05/10/12(水) 20:12 回答[未読]
【29869】Re:時間取得に関して りん 05/10/15(土) 9:37 質問[未読]
【29871】Re:時間取得に関して Hiro 05/10/15(土) 10:07 回答[未読]
【29872】Re:時間取得に関して ぴかる 05/10/15(土) 10:48 発言[未読]
【29887】Re:時間取得に関して りん 05/10/15(土) 15:39 お礼[未読]
【29873】Re:時間取得に関して ponpon 05/10/15(土) 11:06 発言[未読]

【29733】時間取得に関して
質問  りん  - 05/10/12(水) 19:59 -

引用なし
パスワード
   はじめまして

時間取得に関して質問です。
何かいい方法があれば教えて下さい。

例えば
A1セルに入力があった時、C1セルにその時刻を表示
B1セルに入力があった時、D1セルにその時刻を表示

その差をとって時間を取得したいのですが、
now関数を使うと自動更新されてしまい
いい方法が見つかりません。
マクロを使っていい方法はないでしょうか?

【29734】Re:時間取得に関して
回答  Hiro  - 05/10/12(水) 20:12 -

引用なし
パスワード
   ▼りん さん:
A3〜A10セルの内容が変わると、その隣のセルに現在日付・時刻が表示されます。
マクロでNOW関数を使っています。
後は、引き算をくまれたら算出できます。

Private Sub Worksheet_Change(ByVal Target As Range)

  With Target
    If .Column = 1 And .Row > 2 And .Row <= 10 Then
      Cells(.Row, .Column + 1).Value = Now
    End If
  End With
 
End Sub

【29869】Re:時間取得に関して
質問  りん  - 05/10/15(土) 9:37 -

引用なし
パスワード
   ▼Hiro さん:

おはようございます。
返信がおくれました。
下記のコードを書いてみたのですが、
何も起こらずに無反応なのですが
どうすればよいのでしょうか?

>Private Sub Worksheet_Change(ByVal Target As Range)
>
>  With Target
>    If .Column = 1 And .Row > 2 And .Row <= 10 Then
>      Cells(.Row, .Column + 1).Value = Now
>    End If
>  End With
> 
>End Sub

【29871】Re:時間取得に関して
回答  Hiro  - 05/10/15(土) 10:07 -

引用なし
パスワード
   ▼りん さん:
おはようございます。出るはずですよ。

Sheet1にコードを貼り付けていますか?

>何も起こらずに無反応なのですが

エクセルのシート1に
A3〜A10に数字でも文字でも入れてください。
B列に年月日時間が出ます。B列を広げていてください。

後は貴方がアレンジされると良いのでは・・・

>どうすればよいのでしょうか?

>
>>Private Sub Worksheet_Change(ByVal Target As Range)
>>
>>  With Target
>>    If .Column = 1 And .Row > 2 And .Row <= 10 Then
>>      Cells(.Row, .Column + 1).Value = Now
>>    End If
>>  End With
>> 
>>End Sub

【29872】Re:時間取得に関して
発言  ぴかる  - 05/10/15(土) 10:48 -

引用なし
パスワード
   りんさん、Hiroさん、こんにちは。

りんさん、シートモジュールってご存じですか? 私はこの存在を数年経ってから知りました。ほとんどのマクロは標準モジュール記述となると思います。シートモジュールは、イベント(セルの内容変更とか色々)にて動作するマクロを記述する所です。このシートモジュールにHiroさんご提示マクロを記述すればOKです。
まず、マクロ画面のプロジェクトエクスプローラの該当シート部をダブルクリックして下さいネ。

それと、"りんさん"という方がもう一人お見えになります。以前からこちらで回答をされている方です。今後は、HNを変更された方がいいのではないかなと思いますね。

【29873】Re:時間取得に関して
発言  ponpon  - 05/10/15(土) 11:06 -

引用なし
パスワード
   おはようございます。
私も作ってみたので
>例えば
>A1セルに入力があった時、C1セルにその時刻を表示
>B1セルに入力があった時、D1セルにその時刻を表示

本当は、正確なセル位置がよかったのですが・・
シートモジュールに貼り付けてください。
入力するシートタブ→右クリック→コードの表示
または、VBE画面左上のVBプロジェクトの入力したいシートをダブルクリック

Private Sub Worksheet_Change(ByVal Target As Range)

  With Target
    If .Count > 1 Then Exit Sub
    If IsEmpty(.Value) Then Exit Sub
    If Not Application.Intersect(Target, Range("A1:B1")) Is Nothing Then
     Application.EnableEvents = False
      Target.Offset(0, 2).Value = Format(Now, "h:mm:ss")
     Application.EnableEvents = True
    End If
  End With
End Sub

【29887】Re:時間取得に関して
お礼  りん  - 05/10/15(土) 15:39 -

引用なし
パスワード
   ぴかる さん、Hiroさん、ponponさん

ご意見、回答ありがとうございました。
ぴかるさんのおっしゃる通り、シートモジュールの存在を
しらなかった為でした。お騒がせいたしました。

本当にありがとうございます。
HNは変更します。同じだとは知らずに
失礼致しました。

9002 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free