- ベストアンサー
VBAでIf~Thenに条件をもう1つ
以下のようにExcelのVBAでタイムスタンプを比較するところがあるのですが、比較ファイルがないものがありますその場合もthen以降を実行するには、どうすれば良いのでしょうか? If FileDateTime(Mydoc) > FileDateTime(Mydoc2) Then MsgBox "Mydoc" End If ここで、Mydoc2が存在しないときも、MsgBox "Mydoc" を実行したいのですが。 ちなみに、Mydoc2のタイムスタンプが新しいときは、飛ばして次の命令文に進みます。 wかりにくい質問ですが、よろしくお願いします。
- dogs59
- お礼率77% (279/359)
- オフィス系ソフト
- 回答数2
- ありがとう数3
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
> この場合でも、Mydocが新しい場合も、Mydocに当てはまるファイルがない場合も、Mydocと表示されるわけですね。 そうですね。 エラーになった場合は強行されてしまうので、 if dir(Mydoc) <> "" then ~処理 end if などとすると良いと思います。
その他の回答 (1)
- hana-hana3
- ベストアンサー率31% (4940/15541)
>Mydoc2が存在しないときも ファイルの有無はDir関数でチェックできます。 If FileDateTime(Mydoc) > FileDateTime(Mydoc2) or dir(Mydoc2) = "" Then ただし、このままでは FileDateTime(Mydoc2) がエラーになるので、おまじないです。 On Error Resume Next If FileDateTime(Mydoc) > FileDateTime(Mydoc2) or dir(Mydoc2) = "" Then MsgBox "Mydoc" end if
お礼
早速の回答ありがとうございます。 この場合でも、Mydocが新しい場合も、Mydocに当てはまるファイルがない場合も、Mydocと表示されるわけですね。 今、手元にテストできる環境がないもので。
関連するQ&A
- エクセルVBAのIf,Then 構文でOr条件とAnd条件の結合方法?
ワークシート関数で書けば =IF(OR(F18=0,AND(F15>0,F16>0)),TRUE)です。 これをVBAで書こうとして If Sheet1.Range("F18") = 0 Or Sheet1.Range("F15") > 0 And Sheet1.Range("F16") > 0 Then MsgBox True Else MsgBox False End If とやってみたのですが、正しくないようです。 どのように書けばいいのでしょうか?
- ベストアンサー
- オフィス系ソフト
- #If Then ~ #Else ~ #End If(エクセルVBA)
#If Then ~ #Else ~ #End If って何ですか? また、VBAのヘルプで検索する方法ってどうすればいいのですか? どなたか?宜しくお願い致します。
- ベストアンサー
- オフィス系ソフト
- IF文の分岐が正しく動きません
Access VBAについて教えてください。いまオプショングループの中にテキストボックスがあります。オプショングループをoption1、テキストボックスをtextbox1とします。テキストボックスは空の状態で、ロックをかけているので入力はできません。 実行ボタンを押したときに、テキストボックスの中が空ならMsgboxをだしなさいという文をかきました。 If txtbox1.value = "" Then msgbox "nothing" end if また .value=NULL とも書き換えて実行しましたが、なぜかmsgboxを表示せずにend ifにいってしまいます。何が原因と考えられるでしょうか?
- ベストアンサー
- Visual Basic
- 指定した時間より前なら(Time If)
Sub Macro6() if time < 13:00:00 then MsgBox "1時より前です" End If End Sub これを実行したいのですが 構文エラーとなります。 どうすればいいでしょう? よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- VBA 単純なIF文ですが?
以下のような文を書いたときに、If文の後の変数を「set_s」にした場合イコールが実行されません。 「set_s」を単純な数字(この場合16)にするとIf文が機能します。 なぜでしょうか。 Do set_s = 16 Cells(1, 1) = Time h = Left(Time, 2) m = Mid(Time, 4, 2) s = Right(Time, 2) If set_s = s Then Cells(8, 2) = "時間です。" Exit Do Else Cells(8, 2) = "まだです。" End If Loop
- ベストアンサー
- Visual Basic
- VBAでセル範囲条件の指定
下記のようなことを行いたいのですが、VBAの記述でうまくいかなくて困っています。 ----------------------- もし、現在選択中のセルがA1からA5の範囲にあるならば→「実行1」を行う もし、A1からA5の範囲内にないなら「実行2」を行う ------------------------ たったのこれだけのことなのですが、「A1からA5の範囲」を指定する方法がよくわかりません。 ------------------------ Sub セル範囲判定() If ActiveCell = Range("A1:A5") Then MsgBox "A1:A5がアクティブです" Else MsgBox "A1:A5がアクティブではありません" End If End Sub ------------------------- などとしてもうまくいきません。 構文が良くわかっていないので困っています。 「アクティブセルが○○なら」という部分を教えていただけると助かります。
- ベストアンサー
- オフィス系ソフト
- VBA条件分岐で教えてください。
以下のプログラムは一つのセルに複数行のデータがあるとき それぞれの行を独立したデータとして取り出すように計画しています。 それぞれのセルは一行のもの、二行のもの、三行のものとバラバラです。 行のデータが無くなったら次のNEXTを実行させたいのですがうまくいきません。 (現在はメッセージボックスを表示させていますが) 以下のプログラムを実行するとデータがある行は表示しますがデータの無い行に行くと「インデックスが有効範囲にありません」とエラーが出ます。 For n = 4 To 6 A1 = Cells(n, 1) '連番 A2 = Cells(n, 2) 'タイム A3 = Cells(n, 3) '日本語 A4 = Cells(n, 4) Dim tmp As Variant tmp = Split((A4), vbLf) MsgBox tmp(0) If tmp(1) <> "" Then MsgBox tmp(1) End If If tmp(2) <> "" Then MsgBox tmp(2) End If A5 = Cells(n, 5) 'オプション 'テキスト出力 Open "G:\Data.txt" For Append As #1 Print #1, A1; Chr(9); A2; Chr(9); A4 ' Chr(9)はTABスペースのことです。 Close #1 Next VBA初心者です。 よろしくお願いします。
- ベストアンサー
- その他(プログラミング・開発)
- Excel VBA の if elseについて
以下は与えられた自然数が素数であるかどうかを判定する、Excel VBA による素朴なコードです。 自然数が2 とそれ以上の場合で処理を分けていますが、5 行目のelseで 対応するifがないという というコンパイルエラーが出ます。私はプログラミング言語は、Pascal しか経験がなく、Pascal の場合 5 行目の else から後の処理したい複数の構文を begin end で囲めば問題なく動きます。 Excel VBA で同じ処理をさせるにはどうしたらいいのでしょうか? Worksheets("素数").Activate '"素数"シートをアクティブにする Flg = 0 Target = Range("D5").Value if Target = 2 then MsgBox ("2 は素数です。") else 'else 対応するifがないというエラーが出る 'begin ・・・・・ Pascalの場合 K = Int(Target / 2) ' 2 以外の素数は奇数なので偶数で割ることを確認する必要はない。 For I = 3 To K Step 2 If Target Mod I = 0 Then Flg = 1 Exit For End If Next I Snum = Format(Target) If Flg = 0 Then MsgBox (Snum + " は素数です。") Else MsgBox (Snum + " は素数ではありません。") End If 'end ・・・・・ Pascalの場合 End If
- ベストアンサー
- Visual Basic
- アクセスVBA If式
早速ですが、質問させて頂きます。 ACCESS VBAで、各ボックスに入力された数字に対し、論理式が立てられており、全項目ボックスに入力をし『チェック』ボタンを押すと基準を超えるものに『再チェックが必要な項目があります』というメッセージを出した上に、それを赤で反転させる、というのを作成中です。 簡単な図で表すと []はボックスだと思ってください 高さ[ ] 横[ ] 縦[ ] 体積[ ] [チェック]←ボタン 高さが20を超えた場合、要再チェック 横が10以下の場合、要再チェック 縦が5未満又は15を超える場合、要再チェック 体積 高さ*横*縦 が3000以下の場合、要再チェック Private Sub コマンド1_Click() ← チェックボタンをクリック '要チェックか調べます 要チェック = Y If 高さ >= 20 Then Y = Y + 1 End If If 横 <= 10 Then Y = Y + 1 End If If 縦 < 5 Then Y = Y + 1 End If If 縦 >= 15 Then Y = Y + 1 End If ~中略 If Y >= 1 Then Msg = MsgBox("要再チェック項目があります。 ", vbOKOnly + vbExclamation, "確認してください") End If If Y = 0 Then Msg = MsgBox("再チェックは必要ありません。 ", vbOKOnly + vbInformation, "確認してください") End If 体積に関しては、式マクロを組んでいます。 以上です。赤に反転させる方法は分かりませんでした・・・。 このように1つずつIf式でやるのは、あまり綺麗じゃないと思いますし、たったこれだけの簡単な式でも、うまく機能してくれません(涙) どうかお助けいただけませんでしょうか。よろしくお願いしたします。
- 締切済み
- Visual Basic
- VBAのIF分で時間指定の条件式の書き方
VBAのIF分で時間指定の条件式の書き方を教えてください。 9:00~14:00で実行する下記のマクロはうまく機能しています。 If Time >= TimeValue("9:00:00") And Time <= TimeValue("14:00:00") Then 下記をご教授願います。 16:00~翌日の4:00までの、日をまたがっての12時間後の条件式の書き方を教えてください。 よろしくお願いします。
- ベストアンサー
- Visual Basic
お礼
ありがとうございます。 下のお礼の欄が誤記でした。 Mydoc2がない場合でもですね。 教えていただいたもので、テストしてみます。