[[20060509161446]] 『選択できるセルを制限する』(じゅん) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『選択できるセルを制限する』(じゅん)

 たとえばA1セルを選択し、左クリックのままマウスを右に動かすと
 256個目のセルであるIV1のセルまでが連続して選択されますが
 これを10個目のセルであるJ1のセルまでしか選択できないよう
 制限することはできないでしょうか。
 同様に縦のセルはA1〜A10までしか選択できないようにするには
 どうすればいいでしょうか?

 選択して欲しくないセルは非表示にしてしまうのもひとつの手です。
  
 または、下記のコードをシートモジュールに貼り付けてしまうってのはどうでしょうか?
'-------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim C As Range
For Each C In Target
If C.Row > 10 And C.Column > 10 Then
Cells(10, 10).Select
Exit For
ElseIf C.Row > 10 And Not C.Column > 10 Then
Cells(10, C.Column).Select
Exit For
ElseIf Not C.Row > 10 And C.Column > 10 Then
Cells(C.Row, 10).Select
Exit For
End If
Next
End Sub
'(ROUGE)

ありがとうございます。

 素人の私にはむつかしいのでもう一点質問させてください。

 たとえばたての列は全セル7行目まで。
 横の列は全セル3行目までという設定にするにはどこを変えたら良いのでしょうか。
 それさえわかればあとは状況に応じて数字を変えたら良い気がしますのでぜひ教えてください。

 よろしくお願いいたします。

 メンテするということなので、シンプルに・・・
この場合、範囲外を選択したらA1に飛んでいきます。
'-----
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim C As Range
For Each C In Target
If C.Row > 7 Or C.Column > 3 Then '←行はRow、列はColumnを適宜修正
Cells(1, 1).Select
Exit For
End If
Next
End Sub
'()ROUGE)

お早い回答ありがとうございます。

 できれば範囲外を選択したら、設定した選択範囲の限界のところにセルが来る
 ようにできないでしょうか。
 上記のれいなら縦の列は7行目に、横の列は3行目にくると助かります。
 よろしくお願いいたします。

 Cells(1, 1).Select
ここを
 Cells(7, 3).Select
にして下さい。
(ROUGE)

本当に助かりました。
 最後にもう一点。。。

 A列でA10セルまでマウスを引っ張ったらA7セルに、
 B列でB10セルまでマウスを引っ張ったらB7セルに、
 1行目でF1セルまでマウスを引っ張ったらC1セルに
 2行目でF2セルまでマウスを引っ張ったらC2セルというように
 あくまでマウスで選択したところの限界のところにくるようにするにはどこを変えたらいいでしょうか?


 限界の数値を変数に格納してみました。
これでいかがでしょう?
'----
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim C As Range
Dim myR As Long, myC As Long
myR = 7             '←限界の行を入れる。
myC = 3             '←限界の列を入れる。
For Each C In Target
If C.Row > myR And C.Column > myC Then
Cells(myR, myC).Select
Exit For
ElseIf C.Row > myR And Not C.Column > myC Then
Cells(myR, C.Column).Select
Exit For
ElseIf Not C.Row > myR And C.Column > myC Then
Cells(C.Row, myC).Select
Exit For
End If
Next
End Sub
'(ROUGE)

 こういうのはどうでしょうか。参考まで。
 標準モジュールにコピペしてください。
 Test1を実行すると A1:C10の矩形の範囲だけしか選択できなくなります。
 Test2はその解除です。

 Sub Test1()
    ActiveSheet.ScrollArea = "A1:C10"
 End Sub

 Sub Test2()
    ActiveSheet.ScrollArea = ""
 End Sub

 (やっちん)

 なるほろ〜。
勉強させて頂きました<(__)>
(ROUGE)

 やっちんさん ありがとうございます。

 教えていただいた以下のものはsheet1のタブのコードの表示というのを選んで
 出てきたMS VisualBasicというのにそのまま貼り付けたらいいのでしょうか。

 とりあえずやってみましたが変化はありませんでした。

 Sub Test1()
    ActiveSheet.ScrollArea = "A1:C10"
 End Sub

 Sub Test2()
    ActiveSheet.ScrollArea = ""
 End Sub


 実行する必要があるので
 Alt+F8 でTEST1を選択して実行してください。
 でも実際の運用ではブックのオープン時に実行しないとあまり意味がないですね。
 (やっちん)

みなさま ありがとうございました。

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.