Excel VBA質問箱 IV

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

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


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

【37462】コマンドボタン色変え2.&メール送信方法 たけし 06/5/8(月) 19:43 質問[未読]
【37464】Re:コマンドボタン色変え2.&メール送信方法 たけし 06/5/8(月) 20:01 質問[未読]
【37528】Re:コマンドボタン色変え2.&メール送信方法 ハト 06/5/10(水) 11:12 発言[未読]
【37533】Re:コマンドボタン色変え2.&メール送信方法 たけし 06/5/10(水) 19:58 発言[未読]
【37547】Re:コマンドボタン色変え2.&メール送信方法 ハト 06/5/11(木) 14:40 発言[未読]
【37552】Re:コマンドボタン色変え2.&メール送信方法 ハト 06/5/11(木) 15:45 発言[未読]
【37564】Re:コマンドボタン色変え2.&メール送信方法 たけし 06/5/11(木) 23:11 お礼[未読]
【37558】Re:コマンドボタン色変え2.&メール送信方法 わさび 06/5/11(木) 19:59 発言[未読]

【37462】コマンドボタン色変え2.&メール送信方法
質問  たけし  - 06/5/8(月) 19:43 -

引用なし
パスワード
   以前お世話になりました、たけしです。

大変恥ずかしいのですが、この前問題が起きてしまいました。

1、一ヶ月未満を赤に変更したいのですが、残り2ヶ月をきると赤に変わってしまいます。。
  ⇒一ヶ月未満に設定すると、使用者がいないコマンドボタンも赤くなって
   しまうのです。

2、残り2週間前になったら文章をメールにて送りたいのですが、方法が良くわかりません。。

 素人質問で申し訳ないですが、ご教授のほどお願いします。

【37464】Re:コマンドボタン色変え2.&メール送信...
質問  たけし  - 06/5/8(月) 20:01 -

引用なし
パスワード
   ▼たけし さん:
>以前お世話になりました、たけしです。
>
>大変恥ずかしいのですが、この前問題が起きてしまいました。
>
>1、一ヶ月未満を赤に変更したいのですが、残り2ヶ月をきると赤に変わってしまいます。。
>  ⇒一ヶ月未満に設定すると、使用者がいないコマンドボタンも赤くなって
>   しまうのです。
>
>2、残り2週間前になったら文章をメールにて送りたいのですが、方法が良くわかりません。。
>
> 素人質問で申し訳ないですが、ご教授のほどお願いします。

すいません。。これがコードです


Dim i As Integer
   Dim d As Date
   Dim c As OLE_COLOR
  
   For i = 1 To 39
     ' シートiのA1の日付を取得
      d = Worksheets(i + 1).Range("A91").Value
     ' 月の差によって分岐
     Select Case Abs(DateDiff("m", d, Date))
      Case Is = 1: c = vbRed   ' 0,1ヶ月
      Case Is = 2, 3, 4: c = vbYellow  ' 2,3,4ヶ月
      Case Is = 5, 6: c = vbGreen   ' 5ヶ月以上
      Case Else: c = vbWhite
       
   End Select

   
     ' ボタンの色を設定s
     UserForm1.Controls("CommandButton" & CStr(i)).BackColor = c
   Next

【37528】Re:コマンドボタン色変え2.&メール送信...
発言  ハト  - 06/5/10(水) 11:12 -

引用なし
パスワード
   おはようございます

とりあえず、1のほうについてだけですが

>>1、一ヶ月未満を赤に変更したいのですが、残り2ヶ月をきると赤に変わってしまいます。。
>>  ⇒一ヶ月未満に設定すると、使用者がいないコマンドボタンも赤くなって
>>   しまうのです。

>      Case Is = 1: c = vbRed   ' 0,1ヶ月

ここのところですが、

1ヶ月未満 Is = 0
1ヶ月以上2ヶ月未満 Is = 1

ですよ?

後、使用者がいないとは日付が設定されていないということでしょうか?

それと、Datediff を使っていらっしゃいますが
"m"指定ですと日付の月の部分でしか比較しないので

2006/05/01 と 2006/06/30
2006/05/31 と 2006/06/01

どちらも戻り値は”1”となります。

2006/05/10 と 2006/06/10 は 一ヶ月以上
2006/05/10 と 2006/06/09 は 一ヶ月未満
と処理したいのであれば、別の処理を考える必要があるかと・・・

【37533】Re:コマンドボタン色変え2.&メール送信...
発言  たけし  - 06/5/10(水) 19:58 -

引用なし
パスワード
   ▼ハト さん:
>おはようございます
>
>とりあえず、1のほうについてだけですが
>
>>>1、一ヶ月未満を赤に変更したいのですが、残り2ヶ月をきると赤に変わってしまいます。。
>>>  ⇒一ヶ月未満に設定すると、使用者がいないコマンドボタンも赤くなって
>>>   しまうのです。
>
>>      Case Is = 1: c = vbRed   ' 0,1ヶ月
>
>ここのところですが、
>
>1ヶ月未満 Is = 0
>1ヶ月以上2ヶ月未満 Is = 1
>
>ですよ?
>
>後、使用者がいないとは日付が設定されていないということでしょうか?
>はい、日付は設定していません。
>それと、Datediff を使っていらっしゃいますが
>"m"指定ですと日付の月の部分でしか比較しないので
>
>2006/05/01 と 2006/06/30
>2006/05/31 と 2006/06/01
>
>どちらも戻り値は”1”となります。
>
>2006/05/10 と 2006/06/10 は 一ヶ月以上
>2006/05/10 と 2006/06/09 は 一ヶ月未満
>と処理したいのであれば、別の処理を考える必要があるかと・・・

お返事ありがとうございます!!

mが月のみだと知りませんでした。。(教えていただいたコードなので^^;

現在、そのように別処理を考えているのですが、うまくいかないです><

mではなく、他の関数でなにかできないでしょうか?

【37547】Re:コマンドボタン色変え2.&メール送信...
発言  ハト  - 06/5/11(木) 14:40 -

引用なし
パスワード
   ▼たけし さん:
おはようございます

>mが月のみだと知りませんでした。。(教えていただいたコードなので^^;
>
>現在、そのように別処理を考えているのですが、うまくいかないです><
>
>mではなく、他の関数でなにかできないでしょうか?

DateAdd関数で現在の日付に1ヶ月とか加算してシートの日付と大小を比べるのはどうでしょうか?
下のような感じになります


  For i = 1 To 39
    ' シートiのA1の日付を取得
    d = Worksheets(i + 1).Range("A91").Value
     
    If d = "" Then
      ' シートiのA1の日付が未設定(使用者なし)
      c = vbWhite
    Else
      ' シートiのA1の日付が
      ' 1ヶ月未満:赤、1ヶ月以上5ヶ月未満:黄色、5ヶ月以上:緑
      c = Switch(d < DateAdd("m", 1, Date), vbRed, d < DateAdd("m", 5, Date), vbYellow, d > DateAdd("m", 5, Date), vbGreen)
    End If
 
    ' ボタンの色を設定s
    UserForm1.Controls("CommandButton" & CStr(i)).BackColor = c
  Next

メール送信については私はよくわかりません
しかし、過去ログにその手の話題があるようですので
検索してみてください

【37552】Re:コマンドボタン色変え2.&メール送信...
発言  ハト  - 06/5/11(木) 15:45 -

引用なし
パスワード
   申し訳ありません
一部訂正です
>      c = Switch(d < DateAdd("m", 1, Date), vbRed, d < DateAdd("m", 5, Date), vbYellow, d > DateAdd("m", 5, Date), vbGreen)

の部分は
      c = Switch(d < DateAdd("m", 1, Date), vbRed, d < DateAdd("m", 5, Date), vbYellow, d >= DateAdd("m", 5, Date), vbGreen)

でした(最後の比較演算子の間違い)

ちなみにこの関数は

  Select Case d
    Case Is < DateAdd("m", 1, Date)
      c = vbRed
    Case Is < DateAdd("m", 5, Date)
      c = vbYellow
    Case Is >= DateAdd("m", 5, Date)
      c = vbGreen
  End Select

と同じ意味です

【37558】Re:コマンドボタン色変え2.&メール送信...
発言  わさび  - 06/5/11(木) 19:59 -

引用なし
パスワード
   mではなくdにし、
たとえばひと月を28日なり30日なりにして、
日数で判断するというのは…
厳密に1ヵ月じゃなくなってしまうから、ダメですか(^^;

【37564】Re:コマンドボタン色変え2.&メール送信...
お礼  たけし  - 06/5/11(木) 23:11 -

引用なし
パスワード
   ハトさん

ありがとうございます。

早速試したところ出来ました!!

メール送信方法については過去ログを参照にやってみます。


わさびさん

お返事ありがとうございます。
日数はそこまで厳密では無くても良いです。
しかし、ハトさんのコードで解決できました!


お二人ともありがとうございました!!

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