- ベストアンサー
エクセル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 とやってみたのですが、正しくないようです。 どのように書けばいいのでしょうか?
- みんなの回答 (3)
- 専門家の回答
関連するQ&A
- エクセルVBA If Then 構文でOR条件の場合のVBA記述方法は?
仮にセル("A1")が空白か Falseの場合は Then 以下のことをする。 と書きたいのですが If Sheets("Sheet1").Range("A1")="" Then ~略 If Sheets("Sheet1").Range("A1")=False Then ~略 と別々に記載する方法しかわかりません。 ワークシート関数のようにIF(OR(A1="",A1=False),~略)というようにまとめて記述するにはどう書けばいいのでしょうか? AND条件の場合も教えてください。よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- エクセル・マクロでIf Thenの使い方
このような質問は、ルール(エチケット、マナー)違反になるでしょうか? もしそうならお許し下さい。 名前ボックスに表示される名前を、マクロで非表示にし、元に戻す、という操作を次の二つのボタンで実行するように作りました。エクセル2003です。 Private Sub CommandButton1_Click() Dim tname As Name For Each tname In ThisWorkbook.Names tname.Visible = False Next End Sub Private Sub CommandButton2_Click() Dim tname As Name For Each tname In ThisWorkbook.Names tname.Visible = True Next End Sub これを一つのボタンで、If Then Elseを使い実行できるようにしたいのですが If ・・・ Then の間の書き方が分からずうまくいきません。 If Names.Visible = False Then If ThisWorkbook.Names.Visible = False Then If ThisWorkbook.tname.Visible = False Then Private Sub CommandButton3_Click() Dim tname As Name If Names.Visible = False Then 'これでは駄目 For Each tname In ThisWorkbook.Names tname.Visible = False Next Else For Each tname In ThisWorkbook.Names tname.Visible = True Next End If End Sub 苦し紛れにこんなことをやってごまかそうとしているのですがこれって邪道ですしかっこうわるいですよね。 Private Sub CommandButton3_Click() Dim tname As Name If Range("g1").Value = " " Then For Each tname In ThisWorkbook.Names tname.Visible = False Next Range("g1").Value = "1" Else For Each tname In ThisWorkbook.Names tname.Visible = True Next Range("g1").Value = " " End If End Sub ど素人ですがよろしくご教導ください。
- ベストアンサー
- オフィス系ソフト
- vba if構文 すべて答えが同じになってしまう
現在vbaの勉強中です。 問題集通りに下記コードを設定しました。 a1に20以下の数値、例えば「5」を入力するも、 「成人です」の結果になってしまいます。 20より小さい場合は未成年ですの表記になるはずですが・・・。 Sub mondai() Sheets("Sheet3").Select Dim nenrei As Long nenrei = Range("a1").Value If nenrei > 20 Then MsgBox "成人です" Else MsgBox "未成年です" End If End Sub
- ベストアンサー
- XML
- 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~Thenに条件をもう1つ
以下のようにExcelのVBAでタイムスタンプを比較するところがあるのですが、比較ファイルがないものがありますその場合もthen以降を実行するには、どうすれば良いのでしょうか? If FileDateTime(Mydoc) > FileDateTime(Mydoc2) Then MsgBox "Mydoc" End If ここで、Mydoc2が存在しないときも、MsgBox "Mydoc" を実行したいのですが。 ちなみに、Mydoc2のタイムスタンプが新しいときは、飛ばして次の命令文に進みます。 wかりにくい質問ですが、よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- #If Then ~ #Else ~ #End If(エクセルVBA)
#If Then ~ #Else ~ #End If って何ですか? また、VBAのヘルプで検索する方法ってどうすればいいのですか? どなたか?宜しくお願い致します。
- ベストアンサー
- オフィス系ソフト
- EXCEL VBA 比較方法
こんばんは。 EXCEL VBAで、SUM関数で時間の合計を求めたセル(B15)と8:00 を比較して、8:00より大きければメッセージを表示するとしたいのですが、上手くいきません。また、メッセージ後「はい」の場合は、そのままElseの作業を続行。「いいえ」を押した場合は、セル(b2)を選択し、VBA画面が出てくるのを避けたいのです。 勉強途中でいろいろとお聞きし申し訳ありませんがよろしくお願い致します。 IF ~Then ~~~~ ElseIf Range("B15").Value > "8:00" Then MsgBox "8時間を越えています。" Else Range(Range("b65536").End(xlUp).Offset(0), "c22").Copy
- ベストアンサー
- その他([技術者向] コンピューター)
- エクセルVBA if、Elseifの使い方について
調べたり、試行錯誤したのですが分からないので教えてください。 A列の最大値により表示されるメッセージを場合分けします。 (1)最大値が1~9の場合→「終了します」のメッセージを表示させる。 (2)最大値が0の場合 →「該当なし。シートを削除しますか?」のメッセージを表示させる。 (3)最大値が10の場合 →「すべて選択しています。シートを削除しますか?」のメッセージを表示させる。 メッセージをクリックした結果 (1)「はい」をクリックして終了。 (2)「はい」をクリックすれば、シートを削除。「いいえ」をクリックして終了。 (3)「はい」をクリックすれば、シートを削除。「いいえ」をクリックして終了。 'メッセージ Dim maxval As Long maxval = Application.Max(sheet1.Range("A:A")) If maxval >= 1 And maxval <= 9 Then MsgBox " 終了します" ElseIf maxval = 0 And vbYes = MsgBox("該当なし。シートを削除しますか?", vbYesNo) Then Application.DisplayAlerts = False sheet1.Delete Application.DisplayAlerts = True ElseIf maxval = 10 And vbYes = MsgBox("すべて選択しています。シートを削除しますか?", vbYesNo) Then Application.DisplayAlerts = False sheet1.Delete Application.DisplayAlerts = True End If End Sub (1)最大値が1~9の場合は成功します。 (2)(3)最大値が0の場合や10の場合に、「該当なし。シートを削除しますか?」と「すべて選択しています。シートを削除しますか?」の両方が、表示されてしまいます。 (2)(3)の場合に、それぞれのメッセージしか表示されないようにするにはどうしたらよいのでしょうか。 よろしくお願いします。
- ベストアンサー
- その他MS Office製品
- Excel、VBAのIF文で
いつもお世話になります。 エクセルのVBAでセルF4からF65536までを選択していれば印刷して、それ以外を選択していれば「氏名セルを選択してください」と表示させたいのですが、うまくいきません。 全く構文かもしれませんが以下が作成したプロシージャです。VB初心者です。ご指導よろしくお願いします。 Sub 成績個人印刷if() If Range("f5,f65536").Activate = True Then Worksheets("個人カード").Range("a3").Value = ActiveCell.Offset(0, -4) Worksheets("個人カード").PrintOut End If MsgBox "氏名セルを選択してください" End Sub
- ベストアンサー
- オフィス系ソフト
- エクセルVBAでセルが数値か数式かの判断方法
エクセル2000です。 Sub Suuchi() If IsNumeric(Range("A1")) = True Then MsgBox "数値で~す♪" Else MsgBox "数値じゃないよ!" End If End Sub とやってみたんですが、数式も数値となってしまいます。 数値、数式、文字の判断はどうやればいいんでしょうか?
- ベストアンサー
- オフィス系ソフト
お礼
よくわかりました。 ありがとうございました。