• ベストアンサー

EXCELについて

こんにちわ!エクセル初心者です。 EXCELで「立ち上げたときには自動で今日の日付を表示させずに、表示させたいセルをクリックしたら、日付が表示させる」方法を教えていただいたのですが、ワークシートのSelectionChangeイベントに、「Target.Value = Date」と入れましたら、必要以外のところのセルもクリックすると、日付が表示されてしまいます。 例えば、D列のセルだけをクリックすると日付が表示され、ほかの列のセルはクリックしても、日付が表示されない方法はないでしょうか? よろしくお願いします。

noname#132900
noname#132900

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

  • ベストアンサー
  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.3

#01,02です。ご参考に Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim intCOL, intROW As Integer intCOL = Target.Column intROW = Target.Row If intCOL = 4 Or intCOL = 6 Or intCOL = 8 Then 'D,F,H列で If intROW >= 4 and intROW =< 23 Then ’4~23行目のとき Target.Value = Date End If End If End Sub もしくは Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim cl As Range '指定したレンジの範囲のときだけDATEをセット For Each cl In Range("D4:D23,F4:F23,H4:H23") If Target.Address = cl.Address Then Target.Value = Date End If Next End Sub

noname#132900
質問者

お礼

本当に助かりました。ありがとうございました!! また、助けてください・・・よろしくお願いします。

その他の回答 (2)

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.2

#01です。とりあえず簡単で分かりやすいのは If Target.Column 4 or Target.Column = 6 or Target.Column = 8 Then でしょう。F列:6、H列:8です (もっと対象が多い場合は配列を使うほうが便利です)

noname#132900
質問者

お礼

ありがとうございます。できました! が、たとえばF列6の行1~3やH列の行1~3に 文字(テキスト文章)を入れようとクリックすると、自動で日付が表示されてしまっております。 その部分だけ(F列6の行1~3やH列の行1~3)はクリックしても日付を表示させずに、そのほかの行(たとえばF列6の行4~23)に日付を表示させる方法はありますでしょうか? よろしくお願いします。

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.1

D列のセルに限定したいなら If Target.Column = 4 Then Target.Value = Date End If のようにすると良いですよ。COLUMUN=4 がD列を意味します(A列が1) 下の例は A4セルに限定したものです。ご参考まで。 If Target.Address = "$A$4" Then

noname#132900
質問者

お礼

ありがとうございます。 もし、D列のほかにF列とH列も同じようにしたいときはどのようにすればよいでしょうか?

関連するQ&A

  • 「更新後処理」のようなものはありますか?

    エクセルのシートのイベントで、「更新後処理」のようなものはありますか? 例えば、 該当のセルに「あ」という文字を入力したのなら、「あああ」にする という事をしたいのですが、 Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Value = "あ" Then Target.Value = "あああ" End If End Sub これだと、「あ」を入力しただけでは、何も起こらず、 その入力したセルをクリック(入力したセルに移動)すると、「あああ」になります。 これだと2度手間になるので、「あ」が入力されたと同時に、イベントを発生させたいのですが どのイベントを使えばいいのでしょうか?

  • エクセルVBAの書き方で教えてください。

    エクセルで、 「A列にデータを入力した日付をB列に自動で入れる」 (A列のデータを消したときは、B列のデータも消える)ということをするのに、 他の質問を参考にして、 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 1 Then   '対象の列が1列目(A列)なら If Target.Value <> "" Then   '入力された値がブランクでなければ Target.Offset(0, 1).Value = Date   '0行ずれた(同じ行)の1列右隣に日付を入れる Else       'そうでなければ(Deleteキーで消されたら) Target.Offset(0, 1).Value = ""   '同行右隣をブランクすなわち""として消す End If      '入力された値の処理終り End If      '1列目(A列)の処理終り、従ってB列以降はチェックしない End Sub と、入力して、うまく動きました。 ところが、「A列に入力」→「B列に自動で日付」だけでなく、 「D列に入力」→「E列に自動で日付」 「H列に入力」→「I列に自動で日付」と、1つのエクセルシートの中で いくつかの同じ条件のことを繰り返そうと思うとうまくいきません。 この場合、どのようにVBAを記入したら良いのか、教えてください。 よろしくお願いします。

  • Private Sub Worksheet_BeforeDoubleC

    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Target.Column = 4 Then Target.Value = Date End If If Target.Column = 5 Then Target.Value = Date End If End Sub これは、他の方の回答で4列と5列のどこかをダブルクリックすると日付が入力されました。 しかし、シートの保護を入れるとダブルクリックしても入力されません。 それで、例えば、B3セルとかC3セルとかの特定のセルをダブルクリックすると日付が入力されるようにできませんか?宜しくお願いします。

  • SelectionChangeイベント 文字列エラ

    エクセルvbaなのですが セルをクリックしたときに、該当する値ならメッセージを表示させる際に Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Value = 1Then MsgBox "" End If End Sub ならエラーにならずに動くのに Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Value = "運賃" Then MsgBox "" End If End Sub のように文字列にすると、型が一致しません。 と言うエラーになります。 If Target.Value = "運賃" Then の時でも、空白セルや数値が入ったセルをクリックした際はエラーになりません。 どのような型にすればいいのでしょうか? 実際、「運賃」と言う値が入ってるセルをクリックしても同じエラーが発生します。

  • エクセルの使い方について

    エクセルの初心者です。 今、自分のフォームを作っています。 立ち上げたときに、セルに自動で今日の日付を表示する方法は解ったのですが、立ち上げたときには自動で今日の日付を表示させずに、表示させたいセルをクリックしたら、日付が表示するように出来ますでしょうか? どうぞよろしくお願いします。

  • エクセルでの値の自動代入

    エクセルでワークシートのセルからでもユーザーフォームからでもいいのですが、違うワークシート上の表(列が項目、行が日付)の当日日付のセルにマクロで作ったボタンを押すと値が挿入されるような方法はありますか? アクセスで値の代入のようにできればいいのですが。 マクロでもVBAでもいいのですが、できる方法はあるでしょうか?

  • エクセルVBAについて

    エクセルVBAについて 下にある、1行目に入力された数値の、選択したセルの数値を、B5セルに表示させるマクロなのですが、1行目が結合していると、うまくB5セルに表示できません。 Private Sub Worksheet_SelectionChange(ByVal Target As Range)  If Target.Count > 1 Then Exit Sub    '●複数セル選択は無視  If Target.Row <> 1 Then Exit Sub    '●1行目以外の選択は無視  If Target.Column > 6 Then Exit Sub   '●F列目以降の選択は無視  If Target.Value = "" Then Exit Sub   '●選択セルが未入力なら無視    Range("B5").Value = Target.Value End Sub このマクロで、結合しているセルをB5に表示させることはできますでしょうか? 1行目で選択するセルは、すべて2つのセルが結合しています。 よろしくお願いいたします。

  • エクセルでこんなことはできますか?

    エクセルで、 A列には日付が入っていて、B列には数値が入っています。 「A列の日付の月が5月のところのB列の値を合計する」 という式を作ることは可能でしょうか? ワークシートのセルに式を入力して実現できるでしょうか? それともマクロでないとできないでしょうか?? 自分で考えてみたのですが、ギブアップです。。。 日付が入力されているセルの月の値を抽出というか 検索する方法がわかりません・・・ どなたかご教授いただけないでしょうか?

  • エクセル2003 列の表示、非表示 マクロ

    エクセル2003です。 マクロについては初心者以下です。 ワークシートでダブルクリックしたときC列を表示、非表示にするマクロをインターネットで検索してちょっとやって見たのですが、C列だけでなくE、J、M列も表示非表示を同時に行いたい場合は どうすればよいでしょうか? 自動記録も使って見たのですが全部の列が非表示になってしまいだめでした。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) With Columns("C") .Hidden = Not .Hidden End With End Sub あと、ダブルクリックをセル以外の場所で行ったときに実行するようにできたりするのでしょうか? 今の状態だとデータのあるセルを間違えて変更したり、ダブルクリック後セルを移動しないと再び実行できないので・・ 他によい方法等ありましたら教えて頂きたいです。

  • Excelのワークシート内の二つのシートのセルの値(文字列)を共有する

    Excelのワークシート内の二つのシートのセルの値(文字列)を共有する方法を教えて下さい。 具体的には、ワークシート内に|31日|30日|・・・|2日|1日|7月|とタブがあります。 7月のシートのA1が1(日付)のとき、B1にあらかじめ入力した1日のシートのB1(文字列)を 表示させる方法があるのでしょうか。 7月のB1セルに直接=1日!B1と入力すると出来たのですがこれだとA1が28(日付)の時も1日のB1を表示させてしまいうまくいきません。 7月のシートA1の値28(日付)の時に28日のシートのB1、A1の値11(日付)の時は11日のシートのB1を表示という具合にしたいのですが初心者なのでうまくできません。 どなたか詳しく教えていただけませんか。 宜しくお願い致します。