アプリ版:「スタンプのみでお礼する」機能のリリースについて

以前こちらで教えていただき、
以下のように文字を入力したら、右へ移動するようにしました。

Private Sub Worksheet_Change(ByVal Target As Range)

ActiveCell.Offset(-1, 1).Select '入力をしたら右にセルが移動する

End Sub


上記コードでは、deleteを押すと セルが、右上に移動してしまって
困っています。
そこで、以下のようにしてみました。
Private Sub Worksheet_Activate()

Application.MoveAfterReturn = True
Application.MoveAfterReturnDirection = xlToRight
End Sub

すると、今度は、別のエクセルデータを開いても右へセルが移動してしまい、
その都度オプションでカーソルの移動を下へ変更しなければいけなくなってしまいました。

やりたいことは、
決められた一つのファイルでのみ、エンターを押す、もしくは文字を入力する、DELETEを押す
上記の作業の後、セルが右へ1つ移動するというようにしたいのですが、
どのようにしたらよいでしょうか?

A 回答 (2件)

こんにちは。



特定のファイルのみということなので、オプションで設定できる「ENTERを押した後のセルを移動する」を、ファイルを開いたときに設定して、閉じるときに元に戻す、とするのはどうでしょうか。

開いたときはWorkbook_Openイベント、閉じるときはWorkbook_BeforeCloseイベントに記述するといいでしょう。
    • good
    • 0
この回答へのお礼

アドバイスありがとうございます。
さっそくWorkbook_イベントに記載して行ってみます。

お礼日時:2015/04/01 08:52

こんにちは。



既存のApplication.MoveAfterReturn、Application.MoveAfterReturnDirection
を扱う記述やWorksheet_Changeイベント等すべてを排除した上で、
ThisWorkbook モジュールに以下の記述を貼り付けます。
この方法であれば、
 ブックを閉じた後、
 同時に開いた他のブックで作業する時、
既定の下方向へのカーソル移動へと設定を戻します。
コードを貼付けた直後は、Workbook_WindowActivate
が呼び出されるまで何もしませんから、
最初だけ、
Application.MoveAfterReturnDirection = xlToRightを別の方法で実行するか、
他のブックを開いて、アクティブブックを切り替える等して試してください。
尚、Application.MoveAfterReturnは変更する必要のないプロパティです。


' ' /// ThisWorkbook モジュール
Private Sub Workbook_WindowActivate(ByVal Wn As Window)
  Application.MoveAfterReturnDirection = xlToRight
End Sub

Private Sub Workbook_WindowDeactivate(ByVal Wn As Window)
  Application.MoveAfterReturnDirection = xlDown
End Sub
' ' ///


> 決められた一つのファイルでのみ、エンターを押す、もしくは文字を入力する、DELETEを押す
> 上記の作業の後、セルが右へ1つ移動するというようにしたいのですが、

「DELETEを押す」タイミングでカーソルを移動する、というのは、
Windowsでは馴染みのない挙動なので、意図を量りかねています。
通常は、[DEL]→[ENTER]キーという2つのストロークで、
カーソルを移動するものだと思います。
(これでも2ストロークですから、他の処理よりは手数少ない訳ですし)
ということで、差し当たり、
「DELETEを押す」タイミングでカーソルを移動することについては、
今回、何もしていません。
やるとすれば、Application.OnKey メソッドあたりを扱うことになると思いますが、
管理的に難しめです。
何故、その機能が必要なのか、補足説明頂ければ、
それに合わせた形で再度検討してみます。
取り敢えず、以上です。
    • good
    • 1
この回答へのお礼

ありがとうございます。
今回は急いでいたため、記載していただいたものをそのままコピーして
使用させていただきました。

また、「DELETEを押す」タイミングでカーソルを移動する。。。
ご指摘いただいたように、このような動きはするはずないですよね。
ただ、
以前使用していた(記載した内容)だと、
なぜかDELETEを押すとENTERを押さなくてもカーソルが勝手に移動してしまっていたので、
頭の中がごちゃごちゃになってしまっていたようです。

今回コピーさせていただいたソースが自分のやりたいことをすべてできたので
本当に満足しております。
ありがとうございました。

お礼日時:2015/04/01 08:55

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A