If文の条件を外にだしさらに下記のようにIf文の中で論理演算を
させるようなプログラムを作りたいにのですが、
ExxelVBAでそのようなことはできますでしょうか?
できるとしたら教えてください。よろしくお願いします。
sub test()
S1=36
S2=48
’こういう名前の付け方はできないが、要はS1>0という条件に条件1と名づけたい。
条件1:=S1>0
条件2:=S2>0
IF 条件1*条件2=true then
cells(1,1)=1
else if 条件1=true then
cells(1,1)=2
else if 条件2=true then
cells(1,1)=3
else
cells(1,1)=0
end if
end sub
No.2ベストアンサー
- 回答日時:
> ’こういう名前の付け方はできないが、要はS1>0という条件に条件1と名づけたい。
ご提示の例であれば、「変数を宣言して、そこに演算結果を格納」とすることで、
目的を達せられるかと思います。
(話を単純化させるための例で、実際にはこれでは対処できないようでしたら
すみません(汗))
Sub Test()
'「提示された式の演算結果」を格納する変数を宣言
'(式そのものが格納されるわけではないのでご注意を)
Dim 条件1 As Boolean, 条件2 As Boolean
'「Cells(1,1)」をRangeオブジェクトとして格納する変数を宣言
Dim objCell As Range
S1 = 36
S2 = 48
Set objCell = Cells(1, 1)
条件1 = (S1 > 0) '「36 > 0」の演算結果「True」が格納される
条件2 = (S2 > 0) '「48 > 0」の演算結果「True」が格納される
If (条件1 * 条件2) Then
objCell = 1
ElseIf (条件1) Then
objCell = 2
ElseIf (条件2) Then
objCell = 3
Else
objCell = 0
End If
'オブジェクトを参照する変数は、念のため、明示的にメモリを解放
Set objCell = Nothing
End Sub
【補足・蛇足】
・上記で使用している「( )」は、すべて省略可能ですが、個人的には
つけた方が見た目としてわかりやすい感じがしたため、つけています。
・2個目以降の分岐条件では、「Else If」ではなく「ElseIf」(間にSpace
なし)にしないと、エラーになります(多分普段はそうされているのだろう
とは思いますが、念のためということでご了承下さい)。
・分岐条件では「=True」は省略可能なため、これについては省略しています。
・上記の例では条件1・条件2ともブール型(Boolean)なので、
「条件1 * 条件2」は、masa_peeさんの回答にもある通り
「条件1 And 条件2」でも同じ結果になりますが、実際に使用する場面では
バイト型などを使用される場合もあるかと考え、上記の式としました。
(例えば「条件1=1, 条件2=2」の場合、「(条件1 And 条件2) 」という式は
「False」と判断されてしまいます)
・・・長文、失礼致しました。
これこそ求めていた回答です。分岐条件がたくさんになりすぎると、
書くのも見るのも面倒ですが、修正する場合には最悪
なので、なんとかすっきりさせられぬものかと思ってました。
また、Dim objCell As Rangeの件も先読みするかのように
教えていただきありがとうございました。
本当にたすかりました。
As Booleanで変数宣言するというのが、
本質ですね。一応バリアントでもうまくいきました。
ということで、自分が使う場合に近いものを、後の人のため?
以下、参考として付します。
P.S
ElseIfの件、失礼いたしました。
Sub Test()
'「提示された式の演算結果」を格納する変数を宣言
'(式そのものが格納されるわけではないのでご注意を)
Dim 条件(2) As Boolean
'「Cells(1,1)」をRangeオブジェクトとして格納する変数を宣言
Dim objCell As Range
S1 = 36
S2 = 48
Set objCell = Cells(1, 1)
条件1 = (S1 > 0) '「36 > 0」の演算結果「True」が格納される
条件2 = (S2 > 0) '「48 > 0」の演算結果「True」が格納される
If (条件1 * 条件2) = True Then
objCell = 1
ElseIf (条件1) = True Then
objCell = 2
ElseIf (条件2) = True Then
objCell = 3
Else
objCell = 0
End If
End Sub
No.1
- 回答日時:
条件1 と 条件2 をそれぞれ Function にしたらいいんじゃないかな。
Function foo(…) As Boolean
条件1を判定して TRUE/FALSE を返す
End Function
Function bar(…) As Boolean
条件2を判定して TRUE/FALSE を返す
End Function
使うときは if foo = TRUE then … とかできる。
気になるのは質問文の「IF 条件1*条件2」だけど、たとえば「条件1がTRUE かつ 条件2がTRUE」とかのつもりなら「IF 条件1 And 条件2」にしたほうがいいんじゃないか。最近はこういう書き方のほうが多いんかな?
回答ありがとうございました。
関数として明示するということで、
複雑な条件のときには役立つかもしれません。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) マクロ実行時、自動で背景色を変えたい。 C列にあるチェックボックスをチェックするとB列に「TRUE」 4 2022/11/08 11:14
- Visual Basic(VBA) VBA初心者です。 VBAで行単位で条件付き書式の色をカウントしたいです。 大量のデータがあるExc 3 2022/06/08 10:00
- Visual Basic(VBA) VBA初心者です。 VBAで行単位で条件付き書式の色をカウントしたいです。 大量のデータがあるExc 3 2022/06/08 10:02
- Visual Basic(VBA) excel VBA if文について 3 2022/03/27 17:42
- Visual Basic(VBA) VBA エクセル 条件の設定 1 2022/03/28 10:24
- Excel(エクセル) IFERROR(IF()IF())のような形の構文が作れません 2 2023/02/05 17:51
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Visual Basic(VBA) VBAの繰り返し処理表記と複数の処置条件について 1 2023/01/23 20:08
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- C言語・C++・C# C言語でif文が予想と違う動きをする件について7 4 2023/03/20 00:26
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・好きな「お肉」は?
- ・あなたは何にトキメキますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・ハマっている「お菓子」を教えて!
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルのデータについて
-
Excelの警告について
-
Excelのブック内のシートの色を...
-
セル内が空白設定なのに#N/Aと...
-
excelVBAについて。
-
UNIQUE関数、配列数式を使わず...
-
IEを使わずHTMLを取得する
-
エクセルの不調について
-
エクセルで、数字の下4桁の0を...
-
アクセス2016 エクセル2016 重...
-
1.5ヶ月分の費用按分 エクセル関数
-
11ケタの数字を打つと、エク...
-
エクセルの数式が分かりません
-
Excelで、毎月の月曜と金曜の合...
-
excelVBAについて。
-
【マクロ】複数の日付データをY...
-
エクセル数式に問題があります
-
Excelで合計を求めたいです
-
最新I/e?のキャッシュクリア
-
【マクロ】メッセージボックス...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルのセルにFALSEが...
-
IF関数を使って3つ以上のある...
-
FileMakerのcase関数の作り方
-
リフロー炉の急激な温度上昇に...
-
【スプレドシート】IF関数の複...
-
エクセル 計算式 手数料計算
-
メトロポリス法の受理条件
-
女子高生に貢ぎたいひといます?
-
SUMIF関数について
-
同じ式の中にIF関数を2回使う
-
エクセル合計欄0(ゼロ)を表...
-
答えは?
-
「どの国にも頭にも貧しい人は少...
-
IFS関数について。
-
EXCEL・複数条件がある場合のCO...
-
ウイニングポスト7 マキシマ...
-
エクセルの関数DSUMについて
-
最強の圧縮解凍ツールは何だと...
-
レーザビームなどの光線
-
エクセルの数式である文字を含...
おすすめ情報