• ベストアンサー

Excelの時刻表示について

Excelでの時刻表示の質問です。 セルに何かを入力した時(名前など)に他のセルにその入力した時刻を自動的に 表示させたいのですが、そんな事ってできるのでしょうか? よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • take_777
  • ベストアンサー率80% (4/5)
回答No.4

すみません。 多分うまくいかなかったのは、コピーして使われたときに、コードの空白部分が全角スペースになっていたからだと思います。全角スペースを消すか、半角スペースに直してもらえれば大丈夫だと思います。 OK-WEBでは半角スペースが消されてしまうので、全角スペースを入れてしまったのですが、それが問題だったみたいですね・・・お手間を取らせてしまい申し訳ありません。

その他の回答 (3)

  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.3

VBEの利用の仕方を説明せよとのことですので記します。 (1)エクセルのショートカット・アイコンをクリック(私の場合)する。 (2)Book1のSheet1のシートが出る。 (3)メニューバーのツール-マクロ-VisualB  asicEditorを順にクリックする。 (4)VBEのウインドウが現われる。左側のVBAProject(Book1)のSheet1をダブルクリックする。 (5)右側の上の「General」の▼をクリックする。 (6)「Worksheet」が現われるからそれをクリックする。 (7)Private Sub ・・・・とSub Endの間にOK-WEBの解答者のコーディング部分をコピーし貼りつける。 (8)メニュバーの「実行」-「デザインモードの終了」をチェック。 (9)「Sub/ユーザーフォームの実行」をクリックする。 (10)×でVBEのウインドウを閉じる。 (11)×でエクセルを閉じる。その時適当な名前をつける。 (注)(1)(2)は本番では、質問の機能を持たせたいシ   ートを開き(3)から(11)までを行う。その時   もう一度(7)は繰り返すこと。   (2)、(4)のブック名・シート名は勿論自分で設   定した名前で出る。(7)はたまたまイベントとし   てWorksheet_SelectionChangeでもよさそうとして   使いましたが、本当は(5)の右側の▼をクリック   して、適当なイベントをクリックして使います。    この機能を止めるときは、上記VBE画面のコーディング  の最初に「’」を全行に入れて、コメント化すれば良  い。   OK-WEBよりコピーするとき、改行が無理に行わ  れていることがあるので、注意すること。 (訂正)(1)A列でもIf ActiveCell.Column = 1 Then とすれば出来ま  した。   (2)Worksheet_SelectionChangeのイベントより    Private Sub Worksheet_Change(ByVal Target As Range)       If ActiveCell.Column = 1 Then '(注)     ActiveCell.Offset(-1, 1).Value = Time()     End If    End Subの方が、マウスのクリックに反応はせず、データ入力    (エンタ)にだけ反応するので良いでしょう。

nazal
質問者

お礼

入力方法をわかりやすく説明してくださってありがとうございます。 すごく分かりやすかったです。

  • take_777
  • ベストアンサー率80% (4/5)
回答No.2

補足説明として、前の方とは少しだけ違ったコードを書いてみました。このコードでは、"A1"のセルに何かを入力したときのみ、その右隣のセルに日付と時刻が表示されるようにしています。 ちょっと解説すると、 1. SelectionChangeがカーソルの移動にも反応するのに対し、Changeは入力の結果セルの内容が変化したものに反応します。 2. ActiveCellがカーソルのあるセルに対応するのに対し、Targetは入力の行われたセルに対応します。 3. Time()は時刻だけのデータに対し、Now()は前述の通り日付と時刻を合わせたデータです。 4. ActiveCell.Offset(-1, 1)が、カーソルのあるセルから下に-1、右に1移動したセルという指定なのに対し、ActiveSheet.Cells(1, 1)は、現在使っているシートの上から1番目、左から1番目、つまり"A1"のセルを指定します。 ちなみに、例えばTarget = ActiveSheet.Cells(1, 1)をTarget.Column = 1と変えれば、A列の変更に反応するようになります。 ただ、前の方にしても私のものにしても、このままだとエラーが出る可能性がありますので、仕様をもう少し具体的にして頂ければとは思いますが、実際に両方を使ってみて、コードの意味をご確認されると共に、ご自分の意図に合わせて調整して頂ければと思います。 Private Sub Worksheet_Change(ByVal Target As Range)   If Target = ActiveSheet.Cells(1, 1) And Target.Value <> "" Then     Target.Offset(0, 1).Value = Now()   End If End Sub それと、これもExcel VBAを使っていますが、Excelでツール>マクロ>Visual Basic Editorを選択し、Visual Basic Editorを開いて、今開いているシートの名前をダブルクリックすれば入力画面になります。

  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.1

VBAで実質3行の簡単なコーディングをして見ました。 但しA列に入力するとB列には出ない。Offset(-1,1)の -1があるためらしい。B列より右列にデータをいれること。 C列ならIf文を=3、D列なら=4と変えて下さい。(注) また改行のあと、下行へ移動するモードの時に限リます。 Msgbox の行は途中確認のため入れたもので不要。 またVBAとは別にCtrlキーを押しながら、*キーを 押すと時刻がそのセルにセットされますが、この応用は 出来ないでしょうか。日付はCtrl+「+」キー。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) ' MsgBox "aa" ' MsgBox Time() ' MsgBox ActiveCell.Column   If ActiveCell.Column = 2 Then '(注)    ActiveCell.Offset(-1, 1).Value = Time()   End If End Sub

nazal
質問者

お礼

ほぼワープロがわりにExcelを使っている初心者なので、 すみませんがコードの入力方法を教えていただけないでしょうか? VBAProjectのSheet1のところに入力したんですが(あってますか?) どうもうまく行きませんでした。 また入力後に何かする事はあるのでしょうか?(保存など) Ctrl+「+」キーで時刻がでるなんて初めて知りました。 使わせて頂きます。 すみませんがよろしくお願いいたします。

関連するQ&A