- ベストアンサー
入力後、セルの移動する方向について
入力後のセルの移動する方向についてですが、 例えば、「A1からE9までは下方向に、A10からE19までは横方向に」 と、いうように範囲指定することは出来るのでしょうか。 宜しくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
ツールーオプションー編集ー入力後にセルを移動する、をマクロの記録をとると、 With Application .MoveAfterReturnDirection = xlToRight End With となってApplication(エクセル全般)に対しての設定になっていて、Range(セル範囲)ではない。 また別にRangeに対するプロパティの設定ではMoveAfterReturnDirection は無い。 だから不可能です。 ーーー やるならSelectionイベントでセル範囲を判別し、プログラムで切り替えるほか無い。 ー シートタブ部で右クリックーコードの表示ーで出る画面に貼り付け。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) Application.EnableEvents = False Set rng = Intersect(Target, Range("A1:E9")) If Not (rng Is Nothing) Then Application.MoveAfterReturnDirection = xlToRight Else Set rng = Intersect(Target, Range("A10:E19")) If Not (rng Is Nothing) Then Application.MoveAfterReturnDirection = xlDown End If End If Application.EnableEvents = True End Sub ーー 上記は質問で言及している範囲の外の指定が手抜きがあること。 またApplication.EnableEvents = Trueを入れている(入れざるを得ない)が、意味が無いこと。 セル選択が動いた後もこのイベントがもう一度発生してしまう。 ーー>SelecionChangeイベントを使うことは 不適当で、Changeイベントでやるべきか。 Private Sub Worksheet_Change(ByVal Target As Range) でも最初のデータ選択で、現在の設定のMoveAfterReturnDirection が先に効いてしまうのでやりにくい。 など完全ではないが、とりあえずここまでやった結果を挙げておきます。
お礼
一筋縄にはいかないにしても、出来ない訳ではないようですね。 せっかく方法を示して頂いたのに申し訳ありませんが、今の私には手に負えないといったところが現状です。 今後、何とかなりそうならまた検討してみたいと思います。 ありがとうございました。