• ベストアンサー

エクセル マクロ

If Target.Value = "" Then Exit Sub End If シートが空白のとき 選択されないようにするように教えていただいたのですが この分に B1:C11までの範囲 という条件をさらにつけたい場合は (B1:C11)をどのようにいれたらいいのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • ushi2015
  • ベストアンサー率51% (241/468)
回答No.1

こんにちは 全体のコードを書かないと訳が分からないですよ。 Private Sub Worksheet_SelectionChange(ByVal Target As Range)   If Target.Value = "" Then     Exit Sub   End If   If Not Intersect(Target, Union( _       Range("$B$1:$C$11"), Range("$A$2:$A$3"), _       Range("$A$5:$A$6"), Range("$A$8:$A$9"), _       Range("$A$11:$A$13"))) Is Nothing Then     Worksheets(Target.Value).Visible = True     Worksheets(Target.Value).Select   End If End Sub という事でしょうか?

jikkenn
質問者

お礼

申し訳ない これが全体の分です 最初に If Target.Value = "" Then Exit Sub End If 入れるとBとC列は空白を認識するのですが D列などを押すとエラーが出てくるため 範囲していしたかったのです

jikkenn
質問者

補足

Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Address = "$B$2" Or Target.Address = "$B$3" Or Target.Address = "$B$4" Or Target.Address = "$B$5" _ Or Target.Address = "$B$6" Or Target.Address = "$B$7" Or Target.Address = "$B$8" Or Target.Address = "$B$9" _ Or Target.Address = "$B$10" Or Target.Address = "$B$11" Or Target.Address = "$C$2" Or Target.Address = "$C$3" _ Or Target.Address = "$C$4" Or Target.Address = "$C$5" Or Target.Address = "$C$6" Or Target.Address = "$C$7" _ Or Target.Address = "$C$8" Or Target.Address = "$C$9" Or Target.Address = "$C$10" Or Target.Address = "$C$11" Then Worksheets(Target.Value).Visible = True Worksheets(Target.Value).Select Else End If End Sub

その他の回答 (2)

回答No.3

空白「または」B1~C11、という条件にする場合 If Target.Value = "" Or (Target.Row >= 1 And Target.Row <= 11 And (Target.Column = 2 Or Target.Column = 3)) Then '空白またはB1~C11だったらやりたいことをココに書く End if 空白「かつ」B1~C11、という条件にする場合 If Target.Value = "" And (Target.Row >= 1 And Target.Row <= 11 And (Target.Column = 2 Or Target.Column = 3)) Then '空白かつB1~C11だったらやりたいことをココに書く End if

jikkenn
質問者

お礼

ありがとうございます 参考にさせてもらいます

  • kkkkkm
  • ベストアンサー率66% (1734/2604)
回答No.2

多分No1さんの回答が正解だと思いますが、言葉通りと考えて示されたところに追加するのだとしたら、マウスが滑ってセルの選択が2個以上になった時に実行しないようにするのも付け加えて If Target.Count > 1 Then Exit Sub End If If Not Intersect(Target, Range("B1:C11")) Is Nothing And Target.Value = "" Then Exit Sub End If

jikkenn
質問者

お礼

ありがとうございます No1でできました No2さんのでもできました。 参考にさせてもらいます

関連するQ&A

専門家に質問してみよう