• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:マクロ初心者です。ご指導願います。)

マクロ初心者必見!セルの日付と今日の日付を比較する方法

このQ&Aのポイント
  • マクロ初心者の方へ。セルの日付と今日の日付を比較する方法を解説します。
  • 具体的なマクロのコードもご紹介しますので、ぜひ参考にしてください。
  • さらに、日付の形式に関する注意点も合わせてお伝えします。

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

  • ベストアンサー
  • FEX2053
  • ベストアンサー率37% (7987/21355)
回答No.1

「2011/12/12」とセルに表示されていても 中身は「1900/1/1からの日数」の整数です。 ですので、単純に整数値として受ければ オッケーなんですよ。たとえば myDay = Range("A1") If myDay = Int(Now()) Then MsgBox "正しい日付です" Else MsgBox "間違ってます" Now関数は、時刻を小数点以下で取得して しまいますので、日付を比較するときは 小数点を切り捨てて整数化する必要が あります。

makkori25
質問者

お礼

こんなに早くご回答いただけるとは とても助かりました。 >中身は「1900/1/1からの日数」の整数です。 なるほど。そういう事だったのですか~。 コマンドの事ばかり頭にいってて そこまで気が回りませんでした。 おかげで無事に解決できました。 とても判りやい文章で勉強になりました。 ありがとうございます!

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 同じマクロ名でも、違うモジュールならエラーにならな

    同じマクロ名でも、違うモジュールならエラーにならない? エクセルVBAについてご教授ください。 標準モジュールに ――――――――― Option Explicit Sub CommandButton1_Click() MsgBox "" End Sub Sub CommandButton1_Click() MsgBox "" End Sub ――――――――― と同じマクロ名を2つ作ったら、コンパイルエラーになりますが、 上記のコードは一度消して、フォームモジュールに ――――――――― Private Sub CommandButton1_Click() MsgBox "" End Sub ――――――――― を一つ作り、 標準モジュールに ――――――――― Sub CommandButton1_Click() MsgBox "" End Sub ――――――――― を一つ作った場合は、エラーにならずにマクロを実行できました。 これは、フォームモジュールがPrivate Subだからでしょうか? フォームモジュールに1つ、 標準モジュールに1つ なら同じマクロ名を使っても、エラーにならないという事でしょうか? よろしくお願いします。

  • マクロ 修正 (初心者です)

    Option Explicit Private lastRow As Long Private Index As Integer Private Sub CommandButton1_Click() Unload Me End Sub Private Sub あいまいボタン_Click() Dim last As Long If 検索名前テキストボックス.Text = "" Then MsgBox "あいまい抽出する名前を入力してください。" Exit Sub End If last = Range("A500").End(xlUp).Row Range("A2:D" & last).AutoFilter Field:=2, Criteria1:="=*" & 検索名前テキストボックス.Text & "*" End Sub Private Sub UserForm_Activate() Dim i As Long lastRow = Worksheets("顧客情報").Cells(Rows.Count, 1).End(xlUp).Row + 1 If lastRow <= 3 Then Exit Sub End If For i = 4 To lastRow 名前リストボックス.AddItem Cells(i, 2) Next End Sub Private Sub 検索ボタン_Click() Dim searchName As String searchName = 検索名前テキストボックス.Text If searchName = "" Then MsgBox "検索する名前を入力してください。" Else Dim i As Long Dim no As Long For i = 0 To 名前リストボックス.ListCount - 1 If 名前リストボックス.List(i) = searchName Then no = i 名前リストボックス.ListIndex = no Exit For ElseIf i >= 名前リストボックス.ListCount - 1 Then MsgBox "該当なし。" Exit For End If Next Index = no + 3 Rows(Index).Select End If End Sub B列に名前を入力しています B3から検索してくれるマクロを作成しました(インターネット見ながら) 別の検索も作りたくてどこをいじればいいのかわからず書き込みました G3列(住所を検索)から下側を検索したいのですがどこをいじればいいでしょうか?

  • エクセルマクロ セル内の値の抜き出しと入力の値との

    すみません、ハマっております。 下記マクロにて、A2セル内にある(例)「111-22222-5555-666-1」の中のと入力した5555とのマッチングのマクロを作っているのですが、どうしてもA2値がemptyになってしまいうまくマッチングできません。どうしたらよいでしょうか?お力お貸しください。 Private Sub CommandButton1_Click() Unload 番号入力 Dim OdrNum As String If TextBox1.Value = "" Then Exit Sub Else OdrNum = TextBox1.Value While Mid(A2, 11, 4) <> OdrNum '該当番号の欄になるまで不要行削除 If Mid(A2, 11, 4) = "" Then MsgBox "該当番号はありませんでした。" Exit Sub Else End If Rows("2:2").Select Selection.Delete Shift:=xlUp Wend MsgBox "処理終了" End If End Sub

  • エクセル マクロ 特定の文字の色を変更

    Private Sub CommandButton6_Click() MsgBox Mid(ActiveCell, InStrRev(ActiveCell, "⇒") + 1) End Sub このようなマクロがあり 選択しているセルの最後から⇒まで部分をMsgboxで表示してくれますが この文字の色を変更したい場合はどうすればいいでしょうか?

  • EXCELでの変数によるMacro自動実行について

    すいませんが教えてください・・・・・・ EXCELシートにツールボックスより、コマンドボタンを2つ配置しました。 (AUTOMATICはPublic変数で標準モジュールで定義しています Dim AUTOMATIC As Boolean ) ------------------------------------------------------------------ CommandButton_1 : Private Sub CommandButton1_Click() AUTOMATIC = True End Sub CommandButton_2 : Private Sub CommandButton2_Click() AUTOMATIC = False End Sub ------------------------------------------------------------------ あとはEXCELを起動中に、AUTOMATICが Trueでセル(例えばA2のセル)の 値が100のときには Macroを起動したいのですが、どこにどう記述したら いいか教えて欲しいのです。 ------------------------------------------------------------------ CommandButton_1 : Private Sub CommandButton1_Click() if Cells(2,1) = 100 then 'A2はCells(2,1) Macro実行 end if End Sub とAUTOMATICを使用せずに記述しても、毎回CommandButton_1をクリックしな ければMacroが起動することができないので煮詰まってしまいました。 (一度CommandButton_1をクリックしておくとあとはA2セルを監視するだけ でMacroを起動させたい) すいませんがわかる方、教えていただけないでしょうか よろしくお願いします。

  • マクロにおける条件文の作成の件

    以下の様に条件付きの計算式を作成しました。CommandButton3を押しても 計算しなかったり、TextBox3.Value > TextBox1 ではないときでもエラー メッセージが出ます。どこに欠点があるのか教えて下さい。 Private Sub CommandButton3_Click() Dim row As Integer If TextBox1.Value = Empty Then MsgBox ("Aが空欄です") Exit Sub End If If TextBox2.Value = Empty Then MsgBox ("Bが空欄です") Exit Sub End If If TextBox3.Value = Empty Then MsgBox ("Cが空欄です") Exit Sub End If If TextBox4.Value = Empty Then MsgBox ("Dが空欄です") Exit Sub End If If TextBox3.Value > TextBox1.Value Then MsgBox ("Cの値をAの値より小さくしましょう!") Exit Sub End If If TextBox4.Value > TextBox2.Value Then MsgBox ("Dの値をBの値より小さくしましょう!") Exit Sub End If TextBox5 = Round(TextBox1 * TextBox2 - (TextBox1 - TextBox3) * (TextBox2 - TextBox4) / 2, 0) End Sub

  • VBA マクロを動かさない

    (1)ある行のセルを変更したら動くマクロがあります。  Private Sub Worksheet_Change(ByVal Target As Range) (2)ある行のセルに数値を入れるマクロがあります。  Private Sub CommandButton_Click() (2)のマクロが動くと(1)がその後に発動して上書きをしてしまうようです。 これを発動させないようにスキップするにはどうしたらいいのでしょうか?

  • 実行中のマクロを中断したい

    過日、「マクロの中断」について質問し適切な回答をいただき無事解決したものです。 ところが、初心者の悲しさ、少し変わると全く応用がききません。 Range("A1:B10")を読み上げている途中で中断したいのです。前回ご教示いただいたところにより 「DoEvents」や「Me.Repaint」「Sleep」などをあちこち挿入してみましたがうまくいきません。理屈、理論を理解できていないので仕方ないのでしょうがよろしかったら又ご指導のほどお願いします。Excel2003です。 Dim c As Range Dim CancelFlg As Integer Private Sub CommandButton1_Click() Range("A1:B10").Select CancelFlg = 0 For Each c In Selection   ’ DoEvents Application.Speech.Speak c.Value  ’ DoEvents If CancelFlg = 1 Then Exit For  ’ DoEvents Next c Range("A1").Select End Sub Private Sub CommandButton2_Click() CancelFlg = 1 End Sub 前回のご教示いただいたもの Private Sub CommandButton1_Click() Dim i As Integer CancelFlg = 0 For i = 1 To 100 DoEvents ActiveCell.Value = 1 ActiveCell.Offset(1, 0).Activate Application.Wait (Now + TimeValue("0:0:01")) If CancelFlg = 1 Then Exit For Next i End Sub Private Sub CommandButton2_Click() CancelFlg = 1 End Sub

  • マクロのボタン名設定方法

    お世話になります。 マクロのボタン名を 別のファイルのセルの値に設定したいとおもい プログラムを組んでいるのですが、うまくいきません。 CommandButton1をクリックしCommandButton2へ表示 Private Sub CommandButton1_Click() Workbooks("c:\file.xls").Worksheets("Sheet1").Range("A1").Copy Worksheets("Sheet1").CommandButton2.Caption End Sub や Private Sub CommandButton1_Click() Worksheets("Sheet1").CommandButton2.Caption = _ Application.ExecuteExcel4Macro("'C:\[file.xls]Sheet1'!" & Cells(1,1 ).Address(, , xlR1C1)) End Sub などといろいろ試しているのですが、 「インデックスが有効範囲にありません」 とエラーがかえってきます。 そもそもボタン等のプロパティにセットしようとしているのがいけないのでしょうか・・・。 どなたかご教授お願いします。

  • ユーザーフォームの入力時のマクロについて

    いつもお世話になります。 Windows7 excell2010 です。 今まさにVBAをやり出してあまりわかっていませんが下記のようにまでになったところです。 ご指導をいただきたいのは、 参照図にあるUserForm1に入力するとき、 「日付」 ime が 半角数値 「顧客名」ime が ひらがな 「売上」 ime が 半角数値 を自動的にする マクロ を記述したいです。 ご指導いたたければ幸いです。 下記のようなマクロが記述されています。 ※UserForm1 コード表示 Private Sub CommandButton1_Click() n = 1 Do n = n + 1 Loop While Cells(n, 1) <> "" Cells(n, 1) = UserForm1.TextBox1.Text Cells(n, 2) = UserForm1.TextBox2.Text Cells(n, 3) = UserForm1.TextBox3.Text Unload Me End Sub Private Sub CommandButton2_Click() Unload Me End End Sub ※標準モジュール Sub FormSample() Do UserForm1.Show Loop End Sub Sub Test() MsgBox "ボタンによるマクロの実行" End Sub