- ベストアンサー
エクセルで入力後のセルの移動方向の反映が・・・。
例えば入力後右に移動するように設定すると、他のエクセルファイルにも反映してしまうのですが、 文書ごとに変えられないのでしょうか? ブックごと、シートごとに設定できないのでしょうか? ちなみにOSはWinMeでもXPでもエクセル2002でも2003でも同じでした。
- みんなの回答 (8)
- 専門家の回答
質問者が選んだベストアンサー
#7>ありがとうございます!m(__)m 何度も申し訳ないです。 いいえ、どういたしまして! いつも思うことですが、実際のブックをやり取りできれば、話は簡単なんですが、言葉で説明するのって難しいですねぇ。 >>Private Sub Workbook_Open() >というのが見当たらないのですが、 >どのタイミングでどこに出てくるのでしょうか・・・? エクセルを立ち上げてALT+F11でVBEの画面になります。 (既に実行されているんだからここはイイと思いますけど一応念のため) プロジェクトウインドウに VBAProject Microsoft Excel Objects … ThisWorkbook というのが有るはずです。 このThisWorkbook をダブルクリックすると、 ブックのマクロを記述できるコードペインが開きます。 この状態で、上方にある左側のリストボックスに (General) と表示されているハズですが、ココをクリックすると、リストが表示されて、その中にWorkbook があるはずです。 Workbook を選ぶと 自動的に、右側のリストボックスがOpen が選ばれて、 以下のコードが自動的に挿入されます。 Private Sub Workbook_Open() End Sub これは、ワークブックを開いた時に実行されるプロシジャーです。 ここに、ワークブックを開いた時に実行させたいマクロコードを記述します。 同様に、右側のリストボックスからActivate を選択すると 以下のコードが挿入されます。以降同じ。 Private Sub Workbook_Activate() End Sub #7>「標準の状態として設定し直して」 標準の状態というのは、なんでもいいので、新しいブックを開いて、 ツール~オプション 編集タブ □入力後にセルを移動する にチェックを付け、下に移動などと設定をして保存をします。 このオプションの設定は、全てのブックに共通なので、 (そもそも、それが、質問の題意)1つのブックで設定すれば、それ以降に開くブックにも適用されます。 それから、マクロを設定したブックを開くと、その標準の状態を変数として取っておいて変更し、ブックがアクティブでなくなる時(ブックを切り換えたり閉じた時、)取っておいた元の状態に戻します。
その他の回答 (7)
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
#6>「標準の状態に戻す」というところの標準とは、エンターキーを押してもその場から動かないという設定でしょうか? 「このブックを開いたときに設定されていた状態に戻す」という意味です。 #6>このVBAを設定したブックは右になりましたが、その他のブックは入力後の移動をしなくなりました。 おそらく、#6で注意していたエラーになって、 ツール~オプション 編集タブ □入力後にセルを移動する のチェックがはずれた状態になっていると思います。 お手数ですが、標準の状態として設定し直してください。 これで直る(普通のブックは、標準の状態で開き、マクロを設定したブックは、右に移動になる。)と思います。
お礼
ありがとうございます!m(__)m 何度も申し訳ないです。 でもここの意味がちょっとわからなくて。↓ 「カーソルを >Private Sub Workbook_Open() に置いてツールバーから右向き三角ボタンを押してから保存」 >Private Sub Workbook_Open() というのが見当たらないのですが、 どのタイミングでどこに出てくるのでしょうか・・・? それと、「標準の状態として設定し直して」 というのも「#6で注意していたエラー」を解決しないとダメみたいですね。 お時間があるときで結構ですのでよかったら教えてください。
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
#4>やり方教えていただきたいんですが・・・。 既に答えに近いと思ったので、具体的には書きませんでした。 #5で、シートの場合を書かれているのでBookの場合を具体的に書きます。 ALT+F11でVBEの画面にしてThisWorkbook をダブルクリックして以下のコードを貼り付けます。 そのまま保存するとエラーになりますので、 カーソルを >Private Sub Workbook_Open() に置いてツールバーから右向き三角ボタンを押してから保存するか エラーになったら、そのまま終了して 別ブックを開いてからこのファイルを開くというようにしてください。 (プログラムを書き込んだすぐの時には、ファイルを開いた時の標準の状態の保存ができていないため) * 実際に#4で答えた時には試していなかったので#3で言われているプロパティは、方向を設定するプロパティというより方向を設定するかどうかのプロパティだと気付いていませんでした。 適当なことを書いてすみませんでした。 ---------------------------------------------------------------- 'デフォルトの値を保存する変数 Public canAfterReturn As Boolean Public dirAfterReturn As XlDirection Private Sub Workbook_Activate() 'このワークブックがアクティブになった時 'リターンで右にカーソル移動するように設定する Application.MoveAfterReturn = True Application.MoveAfterReturnDirection = xlToRight End Sub Private Sub Workbook_Deactivate() 'このワークブックがアクティブで無くなった時標準の状態に戻す。 Application.MoveAfterReturn = canAfterReturn Application.MoveAfterReturnDirection = dirAfterReturn End Sub Private Sub Workbook_Open() 'デフォルトの状態を読み出して保存しておく canAfterReturn = Application.MoveAfterReturn dirAfterReturn = Application.MoveAfterReturnDirection End Sub
お礼
とっても詳しくありがとうございます! 「標準の状態に戻す」というところの標準とは、エンターキーを押してもその場から動かないという設定でしょうか? このVBAを設定したブックは右になりましたが、その他のブックは入力後の移動をしなくなりました。 ・・・それでも理想に近づきました。(´・∀・) 少し勉強してみます。
- imogasi
- ベストアンサー率27% (4737/17069)
#4のご回答が出ましたが、例えばBook1で作業する(Bookを開いた)とき、VBAで横方向と設定し、BOOK1を閉じる時は、標準(下方向)に変えておくとかすれば、あたかもそのブックごとに設定したかのごとく、自由に設定できます。それと#3は別のことを言ってます。 さらにSheet別に設定するなら Private Sub Workbook_SheetActivate(ByVal Sh As Object) Select Case Sh.Name Case "Sheet1" MsgBox "sheet1" 'Application.MoveAfterRetun = True Application.MoveAfterReturnDirection = xlDown 'xlToRight Case "Sheet2" MsgBox "Sheet2" Application.MoveAfterReturnDirection = xlToRight End Select End End Sub とすれば、Sheet1を開くと、下方向 Sheet2を開くと、右方向にできます。 ツールーマクローVBEで 通常左側に出るVBAProjectのThisWorkBookをクリックし、WorkBookのSheetActivate イベントに貼り付ける。
お礼
いっぱいありがとうございました! まだ成功していませんが、VBAに興味を持ちました。 勉強と練習してみます。
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
VBA を使っても良いと言うことであれば、 #3の言われるプロパティを ThisWorkbook の Workbook_Open() (あるいは、Workbook_Activate()とか)で強制的に設定するようにしておけば良いような気がします。
補足
ありがとうございます!でもVBAって使った事が無いんです。 少し勉強してみます。 もしお時間がありましたら、やり方教えていただきたいんですが・・・。
- imogasi
- ベストアンサー率27% (4737/17069)
エクセルVBAでは、Returnキーを押した後に動く方向を MoveAfterRetun(プロパティ)で設定・取得できますが、Object.MoveAfterRetun で記述します。このObjectはApplicationしか許されません。ApplicationとはエクセルVBAではエクセルそのものです。 WorkBookやWorkSheetは許されないので、エクセルに設定ーー>各ブックに影響が及ぶとなると思います。ある時点で考ると、各ブック単位に別設定はできないということになるでしょう。
お礼
そうですか・・・。(-ω-。`) ありがとうございました! マイクロソフトさんがどうにかしてくれない限り無理なんですね~・・・?
- hurutyann
- ベストアンサー率30% (12/39)
ツールからオプション、編集で「入力後にセルを移動する」には、「上下左右」しか、ありませんね~。 入力するセルの範囲を選択してから行うと、右・下、どちらにも移動しますので、こんな方法では如何でしょうか。
補足
そうですね、範囲選択とかTabを使ったりとか、方法はありますが・・・。 会社のPCの場合、複数の人間が使うので、上司に設定を変えないでと言い辛いんですよね。 そのうえみなさんこういった小技を知らないし覚えてくれないんです。
- yui0909
- ベストアンサー率16% (16/96)
入力後右に移動するように設定すると、他のエクセルファイルにも反映してしまうのですが、 ここの部分がよくわからないので もう少し細かく説明していただけますでしょうか? 移動ってなんですか?何を? よろしくお願いいたします^^
補足
あ、すみません! ツール→オプション→編集 のところに入力後に移動するセルの方向、というのがありますよね。 それを右に設定すると、全てのエクセルファイルが右になるんです。 セルへの文字入力が終わってエンターを押したときの事です。
お礼
BLUEPIXYさん、大成功です!本当に詳しくありがとうございました! 初めてVBAというものを触った初心者なので感激です~! 実は#7にある「右向き三角のボタン=マクロの実行ボタン」を押さずに無理矢理閉じてました。 それでエラーになってたみたいです。 これで上司が使うファイルと自分が使うファイルの設定を分けられるし、BOOKごとに便利な形式に設定自由!って感じですごく嬉しいです!