[[20140915131944]] 『セル入力時に隣のセルに時間表示』(ちぃちゃん) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『セル入力時に隣のセルに時間表示』(ちぃちゃん)

 こんにちは。

 ある列のセルへ数字を入力した時に、その隣のセルへ数字が入力された時間を
 表示させたいと思っています。数字は同じ列へ10分〜15分に1回入力されていきます。
 過去の質問を拝見し、↓のマクロを見つけたので数字部分(列指定部分)を変更して
 使用したいと思ったのですがその応用が出来ず困っています。

 Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column = 7 Then
        Target.Offset(, -2).Value = Time

        End If

 End Sub

 使用しているエクセルシートは、AとB、CとD、EとF、GとH・・・という風にセルが
 結合されており、上記はG列に数字を入力した時にE列へその時間が入力されます。

 さらに、M列に数字を入力した時にK列へも時間を表示させたいと思い

 Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column = 7 Then
        Target.Offset(, -2).Value = Time

        End If

 End Sub

 Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column = 13 Then
        Target.Offset(, -2).Value = Time

        End If

 End Sub

 としてみたのですが、

 コンパイルエラー 名前が適切ではありません。

 となってしまいます。

 どの様にすれば良いでしょうか?
 どなたか助けて下さい><
 よろしくお願いします。

< 使用 Excel:Excel2007、使用 OS:Windows7 >


 >使用しているエクセルシートは、AとB、CとD、EとF、GとH・・・という風にセルが
 >結合されており、上記はG列に数字を入力した時にE列へその時間が入力されます。
 そして、本当は どの列に入力した時に、どの列に時間を入れたいのでしょう?

 A1とB1の結合セルに入力されたら、C1とD1の結合セルに時間を入力?
 ↓のご説明だと、セルの結合はなさそうですが。。。

 >さらに、M列に数字を入力した時にK列へも時間を表示させたいと思い
 これに関しても、M列に数字を入力した時に、隣のN列と少し離れたK列にも時間を表示させたい?

 具体的に、セル番地も使って 例をあげながら説明してもらうと良いかもしれません。
  
(HANA) 2014/09/15(月) 16:39

 Worksheet_Change っていうプロシージャは各シートに一つしか書いてはいけません。

 Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column = 7 Then
        Target.Offset(, -2).Value = Time
    End If
    If Target.Column = 13 Then
        Target.Offset(, -2).Value = Time
    End If
 End Sub

 か
 Private Sub Worksheet_Change(ByVal Target As Range)
    Select Case Target.Column
        Case 7, 13
            Target.Offset(, -2).Value = Time
    End Select
 End Sub

 Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column = 7 OR  Target.Column = 13 Then
        Target.Offset(, -2).Value = Time
    End If
 End Sub

 などのように書いてください。

 蛇足ですが、
 今回は大丈夫でしょうけれど(でも不要な割り込みは発生しています。)
 Change イベントでは、できれば値更新の前後で
    Application.EnableEvents = False 
    処理
    Application.EnableEvents = True
 とする習慣をつけた方が良いと思います。

http://msdn.microsoft.com/ja-jp/library/office/ff839775%28v=office.15%29.aspx
http://vba.ti-da.net/e2482933.html
(Mook) 2014/09/15(月) 17:18


 HANA様

 >そして、本当は どの列に入力した時に、どの列に時間を入れたいのでしょう?
 G列(GとHの結合セル)に入力した時に、E列(EとFの結合セル)に時間を表示させたかったです。

 >これに関しても、M列に数字を入力した時に、隣のN列と少し離れたK列にも時間を表示させたい?
 M列(MとNの結合セル)に入力した時に、K列(KとLの結合セル)に時間を表示させたかったです。

 今後は、今回頂いたアドバイスを元に、具体的なセル番地を記載していく様にしたいと思います。

 Mook様

 提示頂いた3つのコード全てにおいて思い通りの結果が得られました。
 今回は1つ目のコードを使用させて頂きたいと思います。
 ありがとうございました。

(ちぃちゃん) 2014/09/15(月) 20:05


 こんばんは。

 以前、上記ご教授頂き使用していたのですが、 G列(GとHの結合セル)やM列(MとNの結合セル)
 への入力間違いがあった時に、元に戻すボタン(一つ前の状態に戻すボタン)をクリックすると、
 他のシートが表示される様になり、一つ前の状態に戻す事が出来ません。

 マクロが組み込まれているエクセルは、元に戻すボタンを使用してひとつ前の状態に戻す事は
 出来ないのでしょうか?

(ちぃちゃん) 2014/09/26(金) 23:01


 マクロが実行されると、Undo情報がリセットされます
 今回の場合、シートモジュールのChangeイベントが発生
 しているので、セルに入力する度にリセットされます

http://m.chiebukuro.yahoo.co.jp/detail/q14118623074
(稲葉) 2014/09/27(土) 06:12


 稲葉様

 エクセルの仕様でどうしようもないとの事で諦めたいと思います。
 ありがとうございました。
(ちぃちゃん) 2014/09/29(月) 10:25

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.