• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:IfとNotとLikeとOrを使用するVBA)

VBAでIfとNotとLikeとOrを使用する方法

Nebusoku3の回答

  • Nebusoku3
  • ベストアンサー率38% (1459/3802)
回答No.1

Or の代わりに And では如何でしょうか?

levitooicompass
質問者

お礼

ありがとうございます、Andでも一度試してできなかったのですが、もう一度やってみたらできました!一度目はやり方が悪かったのかもしれません。。。

関連するQ&A

  • ifステートメント notと!は同じ意味ですか?

    VBAのifステートメントで、notと!は同じ意味ですか? 「a」で始まらない。 と言う意味で、下記のコードを作ったのですが、どちらも思い通りの結果が得られます。 If "あabc" Like "[!a-z]*" Then Debug.Print "OK" End If If Not "あabc" Like "[a-z]*" Then Debug.Print "OK" End If End Sub ネットからのサンプルをコピペしたので、いまいち理解できてないのですが notと!は同じ意味ですか?

  • エクセル IFとORの関数を使いたいのですが

    IFとOR関数を使ってできると思うのですが、うまくいかないので教えてください。 りんごなら、単価×1.2に、キャベツなら、単価×1.5、みかんなら、単価×1.6、その他の材料なら、そのままにしなさい という式ですが、 if(or(((F5="りんご",I5*1.2),F5="キャベツ",I5*1.5),F5="みかん",I5*1.6),I5) こうしたのですが、エラーになります。 どこがおかしいのでしょうか?よろしくお願いします。

  • エクセルVBAのIFとLikeについて

    現在下記の様なコードを作成しましたが、ヒットする時と漏れが発生する時があります。原因がいくら悩んでも不明な為、コードの記載が変なのかもしれないと投稿しました。 初心者に毛が生えた位しか知識がないので、実際のコードを記載します。 '// 入力が含まれている最終行までをFor Eachで対象にする。 For Each Rr In .Range("A2:A" & .Cells(1000000, 1).End(xlUp).Row) If Cells(Rr.Row, 2).Value Like "re:*" Or _ Cells(Rr.Row, 2).Value Like "Re:*" Or _ Cells(Rr.Row, 2).Value Like "RE:*" Or _ Cells(Rr.Row, 2).Value Like "fwd:*" Or _ Cells(Rr.Row, 2).Value Like "Fwd:*" Or _ Cells(Rr.Row, 2).Value Like "FWD:*" Or _ Cells(Rr.Row, 2).Value Like "*決定*" Or _ Cells(Rr.Row, 2).Value Like "*募集*" Then ※上記のElse以外の下記内容が含まれる場合は処理を実行って意味で記載してます。 ElseIf Cells(Rr.Row, 2).Value Like "*要員*" Or _ Cells(Rr.Row, 2).Value Like "*人材*" Or _ Cells(Rr.Row, 2).Value Like "*紹介*" Or _ Cells(Rr.Row, 2).Value Like "*事業主*" Or _ Cells(Rr.Row, 2).Value Like "*技術者*" Then '// 対象アイテムの代入 Hizuke = .Cells(Rr.Row, 1) Aite = .Cells(Rr.Row, 3) kenmei = .Cells(Rr.Row, 2) どうか宜しくお願い致します。

  • excel2000のVBAでループ内でループさせる方法

    excel2000でVBAを組んでいるのですが下記のような構文でループさせている中でループをさせたいのですがエラーメッセージ "Nextに対するForがありません"と出てしまいます。構文を以下に示しますので間違っている点をご指摘いただけたらと思います。 Dim h As Integer Dim I As Integer For h = 1 To 2 If h = 1 Then F_Name = "回送依頼(通常と翌月).xls" ElseIf h = 2 Then F_Name = "回送依頼(当日).xls" End If Windows(F_Name).Activate ActiveSheet.Unprotect For I = 1 To 2 'ループ内ループ If I = 1 Then S_Name = "通常" ElseIf I = 2 Then S_Name = "通常2" End If Sheets(S_Name).Activate Range("c7:i16").Select Selection.Copy Windows("請求書.xls").Activate Sheets("3").Select Selection.PasteSpecial Paste:=xlValues, _ Operation:=xlNone, SkipBlanks:=False, Transpose:=False Windows(F_Name).Activate ActiveSheet.Unprotect Sheets(S_Name).Activate Range("b7:b16").Select Selection.Copy Windows("請求書.xls").Activate Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False '値貼付 Next I ActiveWorkbook.Save ActiveWorkbook.Close Next h

  • 「Xor」と「Or」の違い(vba)

    こんばんは。 よくわからないので教えてください。 Option Explicit Sub Xorのtest() Dim フルーツ As String フルーツ = "りんご" If フルーツ = "りんご" Xor フルーツ = "イチゴ" Then MsgBox フルーツ End If End Sub '**************************************** Sub Orのtest() Dim フルーツ As String フルーツ = "りんご" If フルーツ = "りんご" Or フルーツ = "イチゴ" Then MsgBox フルーツ End If End Sub 上記のコードなのですが どちらも結果は同じです。 「Xor」と「Or」の違いがよくわからないのですが 何が違うのでしょうか? 調べてみると「Xor」は「排他的理論和」だそうです。 よろしくお願いします。

  • likeの使い方について

    すみません。教えてください。。 ACCESSで下記2つのテーブルをunionでくっつけて nameの右端(1桁目)が同一のもの(CとCCなど)を抽出するため 下記のような構文を構築したのですが抽出されません。。 お手数ですがこちら何が原因となっているか教えていただけないでしょうか。。 よろしくお願い致します。 id name id name 1 a 1 a 2 b 2 b 3 c 3 cc 4 d 5 ee 5 e select * from (select * from tb1 union select * from tb2) as A where name like '*c' or name like '*d' or name like '*e'

  • If文について

    よろしくお願いします。 Excelのマクロで If文を使おうとしています。 ブックAのシート1に会員No.リストがあり、 ブックBに会員Noをシート番号にしたものがあります。 そこで、会員Noに等しいシートを見つけようと、下記のようにIf文を使いました。 しかし、等しいシート番号があるのに 一致した と出ません。 シートの最後まで進んで 不一致 が出ます。 どこが悪いのでしょうか。ご指導お願いします。 For I = 1 To ActiveWorkbook.Worksheets.Count 'ワークシートの数だけ繰り返す MsgBox 会員No & Worksheets(I).Name If 会員No = Worksheets(I).Name Then MsgBox "一致した" End If Next MsgBox "不一致" 質問の補足ですが、マクロはブックAにあります。 ブックAから会員Noを読み取り、ブックBをアクティブにしてから、If文に入っています。またIf文の前のMsgBox 会員No & Worksheets(I).Name で番号が一致する時があることも確認しています。

  • 【VBA】 IFの中にIF

    いつもこちらの識者の方々にはお世話になっています。 VBAの質問です。 やりたいことは下記構文を見ていただければわかると思うのですが、 ------------------------------------------------------------------------------ Sub Test() Dim f As Long Dim lRow As Long lRow = Cells(Rows.Count, 1).End(xlUp).Row For f = lRow To 2 Step -1 If Cells(f, 2).Value = "りんご" Then Cells(f, 2).EntireRow.Delete Else Cells(f, 2).Value = Cells(f, 2) & "0" & Cells(f, 3) Cells(f, 18).Value = If Cells(f, 4).value = 1 Then Cells(f, 13) Else Cells(f, 14) Endif End If Next f End Sub ------------------------------------------------------------------------------ Cells(f, 18).Value = If Cells(f, 4).value = 1 Then Cells(f, 13) Else Cells(f, 14) Endif の部分が解決したい部分になります。 IFで条件分岐したあとの処理にさらにIFで分岐を加えたいのですが、無茶だと思いつつやってみたらやはり通りませんでした。 こういうのはなんというのでしょうか、ネストとも違うと思うのですが・・・ 上記のような場合、どのような構文が適していますでしょうか。

  • アクセスVBA(先日の続きになります)

    前回教えていただきました検索抽出のVBAですが、抽出がうまくできなくなってしまいました。 抽出条件を入力しているにもかかわらず、全部のデータが表示されてしまいます。 どこがまずいのかわかりましたら、ぜひ教えてください。 Private Sub btn_検索02_Click() Dim kensaku As String If Not Me![t_04] = "" Then kensaku = kensaku & _ "([舗装施行年度] Like '*" & Me![t_04] & "*') AND " If Not Me![t_05] = "" Then kensaku = kensaku & _ "([舗装工事名] Like '*" & Me![t_05] & "*') AND " If Not Me![t_06] = "" Then kensaku = kensaku & _ "([舗装区間01] Like '*" & Me![t_06] & "*') AND " If Not Me![t_07] = "" Then kensaku = kensaku & _ "([舗装区間02] Like '*" & Me![t_07] & "*') AND " If Not Me![t_08] = "" Then kensaku = kensaku & _ "([改良施行年度] Like '*" & Me![t_08] & "*') AND " If Not Me![t_09] = "" Then kensaku = kensaku & _ "([改良工事名] Like '*" & Me![t_09] & "*') AND " If Not Me![t_10] = "" Then kensaku = kensaku & _ "([改良区間01] Like '*" & Me![t_10] & "*') AND " If Not Me![t_11] = "" Then kensaku = kensaku & _ "([改良区間02] Like '*" & Me![t_11] & "*') AND " If Not Me![t_12] = "" Then kensaku = kensaku & _ "([台帳作図年度] Like '*" & Me![t_12] & "*') AND " If Not Me![t_13] = "" Then kensaku = kensaku & _ "([台帳調査名] Like '*" & Me![t_13] & "*') AND " If kensaku <> "" Then kensaku = Left(kensaku, Len(kensaku) - 5) DoCmd.OpenForm "検索結果", , , kensakum, acFormReadOnly DoCmd.Maximize DoCmd.Close acForm, Me.Name End If End Sub

  • VBAでIFの複数条件がうまく動きません。

    エラー表示がなくローカルでも見れませんでした。 修正箇所が分からずにいます。 詳しい方教えてください。 何卒よろしくお願いいたします。 ※S、T列に★は入るのですがA列の条件(10000以下)やS列の条件(空白以外)を無視して★が入っています。 作業内容 '(1)A列<従業員ID>のフィルターを数字フィルターで10000以上に設定 '(2)I列<所属>のフィルターを「秋田・長野・栃木・本社」以外に設定 '(3)L列<就労状況>のフィルターを「退職」以外に設定 '(4)M列<勤務形態>のフィルターを「常勤」以外に設定 '(5)S列<資格者>のフィルターを「(空白)」に設定 '(6)J列<エントリー時の保有資格>のフィルターを「aaa・bbb・ccc・ddd」に設定 For r = Cells(Rows.Count, 1).End(xlUp).Row To 4 Step -1 If Cells(r, "A") >= 10000 And _ Not Cells(r, "I") Like "*秋田*" Or Not Cells(r, "I") Like "*長野*" Or _ Not Cells(r, "I") Like "*栃木*" Or Not Cells(r, "I") Like "*本社*" And _ Not Cells(r, "L") Like "退職" And _ Not Cells(r, "M") Like "常勤" And _ Cells(r, "S") Like "" And _ Cells(r, "J") Like "*aaa*" Or Cells(r, "J") Like "*bbb*" Or Cells(r, "J") Like "*ccc*" Or Cells(r, "J") Like "*ddd*" Then Cells(r, "S") = "★" Cells(r, "T") = "★" End If Next r End Sub