
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を探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・「これはヤバかったな」という遅刻エピソード
- ・初めて自分の家と他人の家が違う、と意識した時
- ・いちばん失敗した人決定戦
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel 偶数月の15日(土日祝...
-
Excelの数式について教えてくだ...
-
Excelのメニューについて
-
VLOOKUP FALSEのこと
-
エクセル内に読み込んが画像の...
-
【マクロ】1回目の実行後、2...
-
勤務外時間を出す表が作りたい
-
Excelで作成した出欠表から日付...
-
エクセルの数式について教えて...
-
【マクロ】参照渡しとモジュー...
-
Excelの条件付書式について教え...
-
【マクロ】シート追加時に同じ...
-
マクロを実行すると、セル範囲...
-
【マクロ】参照渡しについて。...
-
Excel 日付の表示が直せません...
-
エクセルで、数字の下4桁の0を...
-
【マクロ】Call関数で呼び出し...
-
別のシートの指定列の最終行を...
-
Excelのデーターバーについて
-
Excelでの文字入力について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルのセルにFALSEが...
-
IF関数を使って3つ以上のある...
-
FileMakerのcase関数の作り方
-
EXCEL・複数条件がある場合のCO...
-
同じ式の中にIF関数を2回使う
-
ノイマン条件について
-
打モモのお弁当作りについて
-
建築を勉強しているものです。 ...
-
【スプレドシート】IF関数の複...
-
メトロポリス法の受理条件
-
エクセルの関数DSUMについて
-
女子高生に貢ぎたいひといます?
-
ウイニングポスト7 マキシマ...
-
FAXの送り方
-
刑務官宿舎
-
警察学校について
-
刑務官 官舎料金等
-
一般曹候補生に落ちたら受験生...
-
刑務官は駐車場無料?光熱費タダ?
-
私は一般曹候補生と自衛官候補...
おすすめ情報