[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『(マクロ) IFで条件をORで7コ指定する方法について』(マイン)
いつもお世話になります。
IF〜OR〜Then について質問をお願いします。
選択セルが
指定された列「3列.8列.13列.18列.23列.28列.33列」以外の場合は
メッセージを表示させる
といった処理を作成しております。
下記のコードで実行した際に
ORが多すぎるのでしょうか?
正しいセルを選択しているにも関わらず、メッセージが表示されます。
'選択セル列の取得 Dim Col As Long: Col = Selection.Column
'指定列が選択されてあるかを判定 If Col <> 3 Or Col <> 8 Or Col <> 13 Or Col <> 18 Or Col <> 23 Or Col <> 28 Or Col <> 33 Then
MsgBox "指定列を選択してください": Exit Sub'指定列を選択していない場合は終了
End If
試しに If Col <> 3 Then とした所、正しく処理されました。
すみませんが、アドバイスのほどよろしくおねがいします。
< 使用 Excel:Excel2016、使用 OS:Windows10 >
この場合は
If Col = 3 Or Col = 8 Or Col = 13 Or Col = 18 Or Col = 23 Or Col = 28 Or Col = 33 Then
else
MsgBox "指定列を選択してください": Exit Sub'指定列を選択していない場合は終了
endif
とするべきでしょう
(無慈悲) 2020/05/19(火) 16:45
この場合はOrではなくてAndですかね。 If Col <> 3 And Col <> 8 And Col <> 13 And Col <> 18 And Col <> 23 And Col <> 28 And Col <> 33 Then
もしくはこんな風にまとめてしまうか。 '選択セル列の取得 Dim Col As Long: Col = Selection.Column '指定列が選択されてあるかを判定 Select Case Col Case 3, 8, 13, 18, 23, 28, 33 Case Else: MsgBox "指定列を選択してください" End Select (助六) 2020/05/19(火) 16:49
様々な方法があるので参考になれば。
Select Case col Case 3, 8, 13, 18, 23, 28, 33 '指定列選択 Case Else MsgBox "指定列を選択してください": Exit Sub End Select
Dim n As Variant For Each n In Array(3, 8, 13, 18, 23, 28, 33) If col <> n Then MsgBox "指定列を選択してください" Exit Sub End If Next n
(tkit) 2020/05/19(火) 16:57
※3の時=8以外の時 となるので3でも8でも該当
こういうことだったんですね。
きまぐれ さん
助六さん
tkitさん
ありがとうございます。
今回はSelect Caseで組み直します。
場面によって色々使い分けできそうで感謝します。
(マイン) 2020/05/19(火) 17:09
質問とは関係ありませんが、マルチステートメントは理解して使ってますか?
単に、見た目がカッコイイとかおもっているだけなら、あんまりおすすめはしないです。
質問のほうは、以前紹介した「Intersectメソッド」を使ってみてはどうですか?
Sub 実験04() Dim MyRNG As Range Dim 列 As Long
If Selection.Columns.Count > 1 Then MsgBox "複数列を選択してはだめなのです" Exit Sub End If
Set MyRNG = Cells(1, 3) For 列 = 8 To 33 Step 5 Set MyRNG = Union(MyRNG, Cells(1, 列)) Next
If Intersect(Selection, MyRNG.EntireColumn) Is Nothing Then MsgBox "指定列を選択してください" Exit Sub '指定列を選択していない場合は終了 End If
End Sub
(もこな2 ) 2020/05/19(火) 17:12
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.