[[20100222192220]] 『セルに値を記入したら、自動的に記入した日付を表』(まちゃ) ページの最後に飛ぶ

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

 

『セルに値を記入したら、自動的に記入した日付を表示する』(まちゃ)

      A      B       C      ・・・AS   AT
  No  顧客   TEL        請求  請求日
1 1001  ○○○  12-3456        Y       2/15
2  1002    ×××  23-4567
3  1003    △△△  34-5678        Y       2/22
4  1004    □□□  45-6789    Y       2/1
5
6

このような感じで請求(AS)の欄にYを記入したら請求日(AT)の欄に自動的に記入した日付を表示したいのですが、どうしたらよいですか?

初心者で全く解りません。

Excel2003/XP


 自動的に日付入力となると、マクロ使わざるを得ないので、
私なら逆の仕様、日付入力でYが表示されるようにしますね。
日付入力はAltキーを押しながらセミコロン(;)キー覚えたら簡単です。
 
AS列は数式で処理 =IF(AT2<>0,"Y","") とか。
 
(みやほりん)(-_∂)b

 マクロでやるならこんな感じ?
 シートモジュールに

 22:16訂正しました。
 '=====ここから=====

 Private flg As Integer
 Private Const myRow = 50 '☆<==ここを変えてください。

 Private Sub Worksheet_Change(ByVal Target As Range)
 If Target.Count > 1 Then Exit Sub
 If Target.Column <> 45 Then Exit Sub
 If Target.Row > myRow Or Target.Row = 1 Then Exit Sub
 If Target.Value <> "Y" Then Exit Sub
 If flg = 1 Then
    If MsgBox("今日より古い日付が入力されています。" & vbCr & _
              "更新しますか?", vbYesNo) = vbNo Then Exit Sub
 End If
 Target.Offset(, 1).Value = Date
 End Sub

 Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 If Target.Count > 1 Then Exit Sub
 If Target.Column <> 45 Then Exit Sub
 If Target.Row > myRow Or Target.Row = 1 Then Exit Sub
 flg = 0

 Select Case Target.Offset(, 1).Value
 Case ""
    Exit Sub
 Case Is < Date
    flg = 1
 Case Else
    Exit Sub
 End Select
 End Sub
 '=====ここまで=====

 すでに古い日付が入力されていた場合の処理がやや面倒かも。

 (通りすがり)

有難うございます。
(みやほりん)(-_∂)bさん
(通りすがり)さん

(みやほりん)(-_∂)bさんのやり方ですと、確かに簡単です。1人だけなら良いのですが、ただ、何人ものPC初心者が使用するとなると大変なのでマクロを使用したいと思っています。

(通りすがり)さんのマクロですが、コピーして貼り付けすれば使えますか?

すいませんど素人なもので((+_+))

(まちゃ)


 いくつか治したいところあるので少々お待ちください…
 上のレスを直して、訂正って文字があればOKです。

 以下やり方
 シート名の部分を右クリックして、コードの表示を選択してください。
 ↑のここから ここまで の部分をそのままそこに貼りつけてください。

 あとで☆マークのコメントつけておきますので、その行の
 数字を変更させることで、処理できる行の増減ができます。
 デフォルトは50にしておきます。
 (通りすがり)

(通りすがり)さん
丁寧な説明有難うございます。
早速やりましたら上手くいきました。
(まちゃ)

(通りすがり)さん見てますでしょうか?

もう1つ聞きたいのですが、今まではYだけ入力でしたが、他に3種類の文字を入れたいと思っています。
その文字によって文字の色を分けたいと思いますがどうしたらよいですか?

文字がYなら文字Yと日付が赤文字になるように!
文字がNなら文字Nと日付が青文字になるように!
文字がAなら文字Nと日付がオレンジ文字になるように!
文字がCなら文字Nと日付が緑文字になるように!

  

     A      B       C      ・・・AS   AT
  No  顧客   TEL        請求  請求日
1 1001  ○○○  12-3456        Y       2/15
2  1002    ×××  23-4567
3  1003    △△△  34-5678        N       2/22
4  1004    □□□  45-6789    Y       2/1
5 1005    ◎◎◎    56-7890        C       2/25
6  1006    ▲▲▲  67-8901        A       2/20

  教えてください。(まちゃ)


 回答ではありません、すみません。

 >日付入力はAltキーを押しながらセミコロン(;)キー覚えたら簡単です。
 Ctrl+; じゃなかったでしたっけ?

 (てつろう)

 あー慣れって怖いもので、Alt+;と書かれていても、勝手にCtrl+;と読み替えていましたねぇ…
 よく気が付きましたね!

 2003だと4種類の条件付き書式を設定できなかった気がするので、またマクロになります。。。
 2007にアップグレードするつもりならもっと簡単に再現できるはずです。

 あとすごく意味不明なんですが
 (どこの) 文字がYなら (どこの)文字Yと日付が赤文字になるように!
 (どこの) 文字がNなら (どこの)文字Nと日付が青文字になるように!
 ここまではたぶん「同じ行の」と解釈できるのですが
 
 (どこの) 文字がAなら (どこの)文字Nと日付がオレンジ文字になるように!
          ~          ~
 (どこの) 文字がCなら (どこの)文字Nと日付が緑文字になるように!
          ~          ~ 
  ここはミスなのかな?

 最初の質問では Y が入力された場合 日付を入力する
 という仕様だったはずですが、では
 日付が入るセルが空白の場合、N A Cはそれぞれどうすればいいんですか?

 (通りすがり)

説明不足ですいませんでした。

確かに最初の質問では、Yが入力されたら隣のセルに自動で日付を表示する!でした。
その件に関しては、(通りすがり)さんの回答で解決しました。

前回の請求(AS)の欄にYを記入したら請求日(AT)の欄に自動的に記入した日付を表示したい!
今回はYだけじゃなく他にも、Y・N・A・Cと文字が4ヶになりこれも同じく隣のセルに自動で日付を表示したいです。

それに付け加えて、文字・日付の色も変更したいのですが、出来るのでしょうか?

これで、意味解りますかね?


 できますが、質問に答えてください…。
 Yなら全部の文字が赤くなるようにするんですか?

 (通りすがり)

回答が遅くなりすいません。

Yなら、Yと隣の日付が赤くなる様にお願いします。

他のN・A・C、も同じような感じで!


 '=====ここから=====

 Private flg As Integer
 Private Const myRow = 50 '☆<==ここを変えてください。

 Private Sub Worksheet_Change(ByVal Target As Range)
 If Target.Count > 1 Then Exit Sub
 If Target.Column <> 45 Then Exit Sub
 If Target.Row > myRow Or Target.Row = 1 Then Exit Sub
 Target.Resize(, 2).Font.ColorIndex = xlAutomatic
 If Target.Value Like "[!Y,N,C,A]" Then Exit Sub
 If Target.Offset(, 1).Value < Date And Target.Offset(, 1).Value <> "" Then
    If MsgBox("今日より古い日付が入力されています。" & vbCr & _
              "更新しますか?", vbYesNo) = vbNo Then Exit Sub
 End If
 Target.Offset(, 1).Value = Date
 Select Case Target.Value
    Case "Y"
         Target.Resize(, 2).Font.Color = RGB(255, 0, 0)
    Case "N"
         Target.Resize(, 2).Font.Color = RGB(0, 0, 255)
    Case "C"
         Target.Resize(, 2).Font.Color = RGB(0, 255, 0)
    Case "A"
         Target.Resize(, 2).Font.Color = RGB(255, 150, 0)
 End Select
 End Sub

 '=====ここまで=====

 よく考えたらYNCAが入力された時点で日付チェックしたほうがいいですよね…。
 全面的に見直しました。
 3/1 8:18

 これでいいのかな?

 (通りすがり)

(通りすがり)さん有難うございます。
きちんと上手にいきました。

(まちゃ)


コメント返信:

[ 一覧(最新更新順) ]


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