- ベストアンサー
Excel内でのセル間のカーソル移動について
- Excel内でのセル間のカーソル移動について質問です。キーボードの矢印キーを押すと、カーソルが移動しますが、A1から↓キーを押し続けると19行目で改行されてB1に移動します。この19行目を削除すると最下段が20行目になります。原因や設定について教えてください。
- Excel内でのセル間のカーソル移動について質問です。カーソルがA1にある状態で↓キーを押し続けると、19行目で改行されてB1に移動します。19行目を削除すると最下段が20行目になります。原因や設定について教えてください。
- Excel内でのセル間のカーソル移動について質問です。カーソルがA1にある状態で↓キーを押し続けると、19行目で改行されてB1に移動します。この振る舞いについて原因や設定について教えてください。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
>ThisWorkBookに書かれたマクロで起動時に何かの設定をしている・・ ようであれば、ThisWorkbookのコードを出し、 ActiveSheet.ScrollArea=の特にScrollAreaの語が見つからないか、VBE画面で編集ー検索で検索してみては。あるいは「19"」など無いですか。<-19行目まで移動した あと、別でProtectというコードも無いですか。
その他の回答 (4)
- imogasi
- ベストアンサー率27% (4737/17069)
考えられるのは マクロ説 保護説 です。 マクロ説が怪しいような。 標準モジュールは、チェックして見たとして、シートモジュールにコードは入っていませんか。 別に 標準モジュールに Sub test03() Application.EnableEvents = False ' Application.EnableEvents = True End Sub を入れて実行し、質問の情況が起こるかどうか報告してみてください。 最終的にはApplication.EnableEvents = Trueにしておくこと。 エクセル(ブック)全体で諸イベントを効かなくする。これで抑止できないならイベントの仕業ではなかろう。 ーーー 参考で Googleで「エクセル カーソル移動」で照会すると沢山記事が出ます。 参考になるものが無いか少数読んでみるとか。
お礼
回答ありがとうございます。 Sub test03() Application.EnableEvents = False End Sub を標準モジュールに入れ、 現象が発生している状態でこれをツール>マクロから実行してみましたが、 現象は消えませんでした。 つまり、 ・マクロでリアルタイムにカーソルの動きを規制しているのではない。 ということですよね。 それと合わせまして、1つ前の返事にも書きましたが、 ThisWorkBookのコードをすべて消して開きなおすことで現象の停止を確認できたので、 ・ThisWorkBookに書かれたマクロで起動時に何かの設定をしている ということみたいです。 Googleのほうも参考にしつつ、 1つ1つ停止させて試してみようと思います。
- myRange
- ベストアンサー率71% (339/472)
そのシートに、ScrollAreaが設定されているのかも? 試しに、以下を。。 '--------------------------------------- Sub test() Sheets(該当シート).ScrollArea = "" End Sub '-------------------------------------- 以上です。
お礼
回答ありがとうございます。 結論から言いますと、ご指摘のコードでは変化がなかったですが、マクロが原因のようです。 ご指摘のコードを該当シートの「コードの表示」の中に書き込んでからシートを切り替えてみたところ、 確かに現象はなくなったのですが、 コードを書き込んだままファイルを保存し開きなおしてみたら、 該当コード書き込まれているにも関わらず現象が発生しました。 また、コードを書き込んでいない状態(質問した時点)のまま、 現象を確認後にシートを切り替えて、元に戻してみただけで、現象は消えておりました。 要するに、開いたシートでのみ発生している、ということのようです。 現象はSheet1で発生しており、ファイルを開いた時はSheet1が開くようになっていたのですが、 Sheet2に切り替えた状態で保存し、開きなおしてみたところ、 今度はSheet2で現象が発生しました(カーソル移動範囲は4~19行目ではなかったですが)。 やはり、開いた際に起動時のシートに対して何かしているようです。 起動時に実行するモジュールは、ThisWorkBookだけだと思うので、そこを見ているのですが、 すべて完璧に把握して書いたコードではないので、どこかのコードが何か影響しているのかもしれません。 とりあえず、 ThisWorkBookの中だけすべて削除して開きなおしてみたところ、現象は消えました。 (ThisWorkBookの中だけコピーして新規Excelファイルに張り付けて開いてみたけど現象発生しませんでしたが) なんだかわからないけど何かしていることはわかりました。
- misatoanna
- ベストアンサー率58% (528/896)
シートモジュールに例えば次のように記述すれば、A1にカーソルが乗って いる状態で[↓]キーを押し続けると、ご質問のように動作します。 [↑]で戻すときは1行目が選択されませんが・・・・ Private Declare Function GetKeyState Lib "user32" _ (ByVal nVirtKey As Long) As Integer Private Sub Worksheet_SelectionChange(ByVal Target As Range) On Error GoTo Er If Target.Row = 20 And GetKeyState(vbKeyDown) < 0 Then Cells(1, Target.Column + 1).Select End If If ActiveCell.Row = 1 And GetKeyState(vbKeyUp) < 0 Then Cells(20, Target.Column - 1).Select End If Er: On Error GoTo 0 End Sub シートタブの右クリックメニューの[コードの表示]から開くウィンドウに このような記述はされていませんか?
補足
回答ありがとうございます。 現象が発生しているシートは、「コードの表示」でみても何も記述されていません。 念のためThisWorkbookの中も見ましたが、それっぽい記述はありませんでした。 (ThisWorkbookに書いても可能かどうかわかりませんが) また、ご指摘のコードが原因の場合、 仮に19行目を削除したとしても、カーソルの動きは変わらないですよね? 今発生している現象は、 20行目を1行選択して削除することで、20行目が最下段になります。 つまり20行目の削除することで20行目の設定が初期化されたことにより、20行目もカーソルキーでカーソルが乗るようになった、のだと思います。 なので、 20行目以降のセルに何らかの設定がされているせいで現象が発生しているんだと考えています。 下手にマクロ書きすぎたせいでセルの設定がバグっちゃったんでしょうか??
- xls88
- ベストアンサー率56% (669/1189)
「シートの保護」が掛けられていませんか? ユーザーに許可する操作で 「ロックされたセル範囲の選択」のチェックが外れている 「ロックされていないセル範囲の選択」にチェックが入っている といった設定がせれているのでは?
補足
回答ありがとうございます。 「シートの保護」はかけられていません。 その操作は別のシートで行っているため、どのような結果になるか把握しているつもりです。 この場合は選択自体ができなくなりますが、 今回質問した件だと、 選択は可能なのに、↓キーだと19行目までしかいかない、という状態です。 ほかに関係のありそうな項目として、 3行目で「ウインドウ枠の固定」を設定してあり、下にどんなにスクロールしても1~3行目は表示されたままになるようにしています。 そのため、例で挙げたA19の時↓キー押すとB1になる、というのは厳密には、 A19の時↓キーを押すとB4に、B19の時↓キーを押すとC4に、なります。 書き忘れましたが、Excel2003です。 このファイルをExcel2010で開いても同じ現象が出ました。
お礼
回答ありがとうございます。 ご指摘のScrollAreaや19といった文字列は無いのですが、「Protect」に関してはThisWorkbook内にあります。 ただし、問題(カーソルが一部に乗らない)が発生しているのはSheet1で、 ThisWorkbook内で保護をかけるように書いているのはSheet2です。 だから無関係だと思ったのですが、 実際にこのThisWorkbook内の「Protect」の行、 Worksheets("Sheet2").Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, UserInterfaceOnly:=True Worksheets("Sheet2").EnableSelection = xlUnlockedCells をコメントアウトしてみましたところ、現象は発生しなくなりました。 この2行をコピーし、 新規BookのThisWorkbook内に、 Private Sub Workbook_Open() Worksheets("Sheet2").Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, UserInterfaceOnly:=True Worksheets("Sheet2").EnableSelection = xlUnlockedCells End Sub のように書き込んだところ、 同じ現象を確認できました。 つまり、 ・ファイルを開いた時にSheet2に保護をかけるようにマクロを組む。 ・ファイルを開いた時にSheet2以外が開かれる。 という状態だと、そのシートにも一時的に保護がかかってしまうようです。 このThisWorkbookへの書き方が問題なんだろうと思い、 http://oshiete.goo.ne.jp/qa/6068320.html に別途質問させていただきました。 こちらは閉じます。 ありがとうございました。