アレルギー対策、自宅でできる効果的な方法とは?

I,K,L,M列は選択肢入力、及びカレンダー入力で入力されます。
Q列はK列+L列に期間が加算されて数式によって月末が表示されます。
R列はI列の日付によって3年目の年度末日が数式によって表示されています。
Q列の日付がR列の日付を超えてしまった時に警告を表すメッセージボックスを出したいと思います。
VBAの書き方を教えてください。

「期限を超えた日付に警告のメッセージボック」の質問画像

質問者からの補足コメント

  • Officeは2010、Windows8です。

      補足日時:2015/03/07 09:58
  • 回答ありがとうございます
    このコードのみでは満足いく結果でした。
    下記コードとバッテングするようでエラーになります。
    このコードと共存できないでしょうか?

    Private Sub Worksheet_Change(ByVal Target As Range)
    '半角大文字入力
    Dim r As Range
    If Intersect(Target, Range("G:G")) Is Nothing Then Exit Sub
    Application.EnableEvents = False
    For Each r In Target
    If r.Value <> "" Then
    r.Value = StrConv(r.Value, vbUpperCase + vbNarrow)
    End If
    Next r
    Application.EnableEvents = True
    End Sub

    No.2の回答に寄せられた補足コメントです。 補足日時:2015/03/07 22:22

このQ&Aに関連する最新のQ&A

A 回答 (2件)

一案です。


シート名のタブを右クリック
コードの表示をクリックしてVBエディターが起動

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 9 Or Target.Column = 11 Or Target.Column = 12 Then
If Range("Q" & Target.Row).Value > Range("R" & Target.Row).Value Then MsgBox "確認してください"
End If
End Sub

を貼り付けて閉じる。
とりあえず I、K、L列に値を入れてみてください。
Q,R列の関数の結果でメッセージが出ますが、
入力する順番で余計なメッセージも出ます。
この回答への補足あり
    • good
    • 0
この回答へのお礼

Worksheet_Change_1 で解決しました。
ありがとうございました。

お礼日時:2015/03/08 07:10

どの様なタイミングでメッセージがほしいのでしょうか?


別案ですが
I、L、M列に入力をされると思いますが、条件付き書式で
数式で、Q列>R列 の場合にセルの塗りつぶしで 赤など目立つ色になるように
設定しては如何でしょうか。
設定は
I~R列を選択
条件付き書式=>新しいルール
数式を使用して、書式設定・・・
数式に =$Q1>$R1
書式のボタンを押して、塗りつぶしで ご希望の色を選択して
OK
すれば完了です。
    • good
    • 0
この回答へのお礼

hallo-2007さん回答ありがとうございました。
出来れば、塗りつぶしのタイミングでメッセージボックスが現れて「期限を超えています」と表示したいです。

お礼日時:2015/03/07 15:20

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qエクセル:該当日にアラートを出す。

お世話になります。
エクセルでデータ集計をしています。
毎日、案件が増えるタイプの書類で1行目が各項目名、2行目からがデータです。
A列にデータ入力日を入力しています。B列に標題を入力しています。

そこで、C列に、入力日から3日たつとアラートを表示させるようにしたいのですが、これはVBAでないと難しいでしょうか。

関数でもVBAでもかまいません。
簡潔にできるのが望ましいのですが、知識がなく、わかりません。
どなたか、お分かりでしたら、ご教授ください。

Aベストアンサー

A列の日付から3日以上たっていればC列に何かを表示すればいいのですね?

では、C2セルに
=IF(AND(TODAY()-A2>2,A2<>""),TODAY()-A2&"日たちました!","")
といれて、下までずっと引っ張って式をコピーしてください。
A列に入力があり、その日付から3日以上たったもののみに表示が出ます。

Qエクセル マクロで指定日にメッセージ

ファイルを開いた時、本日の日付があるセル範囲(例 A1:B15)の中の日付とマッチした場合にのみメッセージを表示する方法をご存知でしたら教えてください。

宜しくお願いいたします。

Aベストアンサー

Findメソッドを使う方法もあります。
下記コードを標準モジュールにコピペ
 
'-----------------------------------------
Sub Auto_Open()
 Dim FoundCell As Range
 Set FoundCell = Range("A1:B15").Find(Date, , xlValues, xlWhole)
 If Not FoundCell Is Nothing Then
  MsgBox FoundCell.Address & " に今日の日付あり"
 End If
End Sub
'-------------------------------------------

ブックを開いたときマクロを自動で実行させるためにはふつう次の2つのどちらかを使用します。
(1)標準モジュールに、Auto_Openという名前のマクロを作る
(2)WorkBookのOpenイベントにマクロを作る
正確に言うと上記2つはある条件のもとでは違った動作をするのですが今回の場合は同じ動作をします。

 
 

Findメソッドを使う方法もあります。
下記コードを標準モジュールにコピペ
 
'-----------------------------------------
Sub Auto_Open()
 Dim FoundCell As Range
 Set FoundCell = Range("A1:B15").Find(Date, , xlValues, xlWhole)
 If Not FoundCell Is Nothing Then
  MsgBox FoundCell.Address & " に今日の日付あり"
 End If
End Sub
'-------------------------------------------

ブックを開いたときマクロを自動で実行させるためにはふつう次の2つのどちらかを使用します。
(...続きを読む

QExcelで、期限切れのリストが一目で分かるようにしたい

こんにちは。
Excelで申し込み受け付けリストを作っているのですが、
申込日から3カ月経ったものは、期限切れとして
自動的に見分けがつく方法を探しています。
(例えば文字色が赤に変わるなど)

方法をご存知の方、教えて頂ければ幸いです。

Aベストアンサー

例えばA列に日付が入力されているとして、A列を選択してから、「ホーム」タブの「条件付き書式」で「新しいルール」を選択し、その後に、「数式を使用して、書式設定するセルを決定」を選択します。
式の窓には =DATEDIF(A1,TODAY(),"M")>=3 を入力してから「書式」をクリックし「フォント」タブから「色」で赤色を設定してOKすればよいでしょう。

Qエクセルで入力した日付が今日を過ぎた場合に赤くなるには

どのような関数(式)を設定すればいいのでしょうか?
例えば、今日3月23日とあるセルに入力します。
今日は黒い文字なのですが、それを来週(3月24日)に
見ると、赤く表示させたいのです。
宜しくお願い申し上げます。

Aベストアンサー

条件付書式の設定をすれば、可能です。

(1) 設定するセルを指定
(2) [書式] → [条件付書式]
(3) 条件の条件を設定
「セルの値が」 「次の値より小さい」 「=today()」
(4) [書式]ボタンを押下
(5) フォントの色を赤に設定

の手順でできます。

QエクセルのIF関数で、文字が入力されていたならば~

エクセルのIF関数で文字が入力されていたならば~、という論理式を組み立てたいと思っています。

=IF(A1="『どんな文字でも』","",+B1-C1)

A1セルに『どんな文字でも』入っていたならば、空白に。
文字が入っていなければB1セルからC1セルを引く、という状態です。

この『どんな文字でも』の部分に何を入れればいいのか教えてください。

またIF関数以外でも同様のことができれば構いません。

宜しくお願いします。

Aベストアンサー

=IF(ISTEXT(A1),"",B1-C1)

でどうでしょうか?

Qvba エクセルで提出期限の管理をしたい

VBA勉強中の初心者です。
添付画像のような表があったとして・・
・提出期限を過ぎていれば(今日より前の日付だった場合)、文字色を赤にする
・期限を守れていなくても提出実績があれば期限と実績を両方グレーの塗りつぶし、文字色は黒
・空白セルはそのまま
という処理をさせるチェックマクロを作ってみたいです。
上の表が今日の状態として、書式のない状態からチェックマクロを実行すると上のような書式になり、6月1日にチェックマクロを実行すると下のようになる。。というのが理想なのですが、そういったことはマクロで可能ですか?
質問のために表を2つ作っていますが実際は一つの表で文字色や背景色をその都度変更したいです。

ワークシート関数をEvaluateで判定しながらセルを移動していけばいいのかな?などぼんやりとしか思いつかないので切り口になるようなコードを提示頂けると助かります。

Aベストアンサー

No.2・3です。

>For j For i~Next i Next jのあとまたFor j For i~Next i Next jになるので・・・
No.2とNo.3のコードは重複している部分が多くありますので、
二つの操作をしても無駄に二重ループしているだけです。

当方の書き方も悪かったのですが、
No.2の方は 列 → 行 の順にループさせ、No.3の方は 行 → 列 と逆にしていました。
(どちらでも問題ありません)

さて、前回の「太線」の部分はそのセルに色を付けたい!という意味で太線にしていただけですね?

今までのコードはすべて消去し、↓のコードに変更してみてください。

Sub Sample3()
Dim i As Long, j As Long, lastRow As Long, lastCol As Long
lastRow = Cells(Rows.Count, "B").End(xlUp).Row
lastCol = Cells(2, Columns.Count).End(xlToLeft).Column
'//一旦フォント色を「自動」に
Range(Cells(3, "C"), Cells(lastRow, lastCol)).Font.ColorIndex = xlAutomatic
'//3行目~最終行まで1行おき
For i = 3 To lastRow Step 2
'//C列~最終列まで
For j = 3 To lastCol
With Cells(i, j)
'//セルが空白でない場合
If .Value <> "" Then
'//本日より前の場合
If .Value < Date Then
'//下のセルが空白ならば
If .Offset(1) = "" Then
'//④の処理
'//フォント色を「赤」に
.Font.ColorIndex = 3
'//下のセルにデータがあれば
Else
'//2セルを「灰色」に塗りつぶし
.Resize(2).Interior.ColorIndex = 15 '最初の質問の処理
End If
'//本日以降の場合
Else
'//②の処理
'//下のセルにデータがあれば
If .Offset(1) <> "" Then
'//2セルを「灰色」に塗りつぶし
.Resize(2).Interior.ColorIndex = 15
End If
End If
'//セルが空白の場合
Else
'//③の処理
'//下のセルにデータがあれば
If .Offset(1) <> "" Then
'//2セルを「灰色」に塗りつぶし
.Resize(2).Interior.ColorIndex = 15
End If
End If
End With
Next j
Next i
End Sub

これではどうでしょうか?m(_ _)m

No.2・3です。

>For j For i~Next i Next jのあとまたFor j For i~Next i Next jになるので・・・
No.2とNo.3のコードは重複している部分が多くありますので、
二つの操作をしても無駄に二重ループしているだけです。

当方の書き方も悪かったのですが、
No.2の方は 列 → 行 の順にループさせ、No.3の方は 行 → 列 と逆にしていました。
(どちらでも問題ありません)

さて、前回の「太線」の部分はそのセルに色を付けたい!という意味で太線にしていただけですね?

今までのコードはすべ...続きを読む

QEXCELで免許証有効期限2ヶ月前に警告する関数!

免許証の更新間近を警告する表を作成しています。

本日の日付 H18.2.16
免許証有効期限 H18.5.3

上記のような場合、有効期限の2ヶ月前に"期限間近"とセルに表示させたいのですが、よい関数はありますでしょうか?
おわかりの方教えてくださーい!

Aベストアンサー

now関数で可能です。

a1=now() ---当日の日付表示
a2以降に免許証の日付入力する b2に下記関数を入れる
 =if(a2>now()+60,"","期限間近") 
当日より60日未満のデータに期限間近を表示する。
後は行のコピーで何項目でも可能です。

Qエクセルのセルにカレンダーを表示させ、日付をセルに入力させたい

エクセルについて教えて下さい。

エクセルのセルをクリックすると、
カレンダーのようなものが表示され、
マウスで選択すると、
セルに日付が入力されるようにするには
どうしたらよいですか?

すみませんが、宜しくお願い致します。

Aベストアンサー

#02です。foo-mさんがVBAをお使いになるなら、以下のサンプルをいじってみてください。

このサンプルはC4セルがクリックされたときにカレンダーコントロールを表示して、日付を選んだらその日付をC4に書き込み、カレンダーコントロールを閉じるマクロです。

Private Sub Calendar1_Click()
Selection.Value = Calendar1.Value
ActiveSheet.Calendar1.Visible = False
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address = "$C$4" Then
ActiveSheet.Calendar1.Visible = True
End If
End Sub

マクロはシートのモジュールとしてペーストして下さいね

Q別のシートから値を取得するとき

Worksheets("シート名").Activate
上記のを行ってから別シートの値を取得するのですが、
この処理を行うと指定したシートへ強制的にとんでしまいます。。。

※イメージ
For ~ To ~
  Worksheets("シートA").Activate
  シートAの値取得
       :
  Worksheets("シートB").Activate
  シートBの値取得
Next

このイメージ処理を行うとものすごい勢いで画面がチカチカします。。。
シートを変えずに他のシートから値を取得する方法はないのでしょうか。
教えてください!

Aベストアンサー

Worksheets("シートA").Range("A1")

みたいな感じでできませんか?

Qエクセルで、条件に一致した行を別のセルに抜き出す方法

エクセルで、指定した条件に一致するセルを含む行をすべて抜き出す方法が知りたいです。

たとえば、

<A列> <B列> <C列>
7/1 りんご 100円
7/2 ぶどう 200円
7/2 すいか 300円
7/3 みかん 100円

このような表があって、100円を含む行をそのままの形で、
別のセル(同じシート内)に抜き出したいのですが。

7/1 りんご 100円
7/3 みかん 100円

抽出するだけならオートフィルターでもできますが、
抽出結果を自動的に、別の場所に、常に表示させておきたいのです。

初歩的な質問だと思いますが、検索しても分からなかったので、よろしくお願いします。

Aベストアンサー

同じ質問が結構よく出てますが、そんなに初歩的でもありません
別シートのA1セルに「100円」と入力し、そのシートの任意のセルに以下の式を貼り付けて下さい。後は、下方向、右方向にコピー。
日付のセル書式は「日付」形式に再設定してください

=IF(COUNTIF(Sheet1!$C:$C,$A$1)>=ROW(A1),INDEX(Sheet1!A:A,LARGE(INDEX((Sheet1!$C$1:$C$500=$A$1)*ROW(Sheet1!$C$1:$C$500),),COUNTIF(Sheet1!$C:$C,$A$1)-ROW(A1)+1)),"")

データ範囲は500行までとしていますが、必要に応じて変更して下さい


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報