【映画】『グリーンブック』アカデミー賞作品賞!!傑作の理由 >>

例えば入力後右に移動するように設定すると、他のエクセルファイルにも反映してしまうのですが、
文書ごとに変えられないのでしょうか?
ブックごと、シートごとに設定できないのでしょうか?
ちなみにOSはWinMeでもXPでもエクセル2002でも2003でも同じでした。

このQ&Aに関連する最新のQ&A

A 回答 (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つのブックで設定すれば、それ以降に開くブックにも適用されます。
それから、マクロを設定したブックを開くと、その標準の状態を変数として取っておいて変更し、ブックがアクティブでなくなる時(ブックを切り換えたり閉じた時、)取っておいた元の状態に戻します。
    • good
    • 0
この回答へのお礼

BLUEPIXYさん、大成功です!本当に詳しくありがとうございました!
初めてVBAというものを触った初心者なので感激です~!
実は#7にある「右向き三角のボタン=マクロの実行ボタン」を押さずに無理矢理閉じてました。
それでエラーになってたみたいです。
これで上司が使うファイルと自分が使うファイルの設定を分けられるし、BOOKごとに便利な形式に設定自由!って感じですごく嬉しいです!

お礼日時:2006/05/10 22:34

#6>「標準の状態に戻す」というところの標準とは、エンターキーを押してもその場から動かないという設定でしょうか?


「このブックを開いたときに設定されていた状態に戻す」という意味です。

#6>このVBAを設定したブックは右になりましたが、その他のブックは入力後の移動をしなくなりました。
おそらく、#6で注意していたエラーになって、
ツール~オプション
 編集タブ
  □入力後にセルを移動する
のチェックがはずれた状態になっていると思います。
お手数ですが、標準の状態として設定し直してください。
これで直る(普通のブックは、標準の状態で開き、マクロを設定したブックは、右に移動になる。)と思います。
    • good
    • 1
この回答へのお礼

ありがとうございます!m(__)m 何度も申し訳ないです。
でもここの意味がちょっとわからなくて。↓

  「カーソルを
  >Private Sub Workbook_Open()
  に置いてツールバーから右向き三角ボタンを押してから保存」

>Private Sub Workbook_Open()
というのが見当たらないのですが、
どのタイミングでどこに出てくるのでしょうか・・・?

それと、「標準の状態として設定し直して」
というのも「#6で注意していたエラー」を解決しないとダメみたいですね。

お時間があるときで結構ですのでよかったら教えてください。

お礼日時:2006/05/09 22:38

#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
    • good
    • 1
この回答へのお礼

とっても詳しくありがとうございます!
「標準の状態に戻す」というところの標準とは、エンターキーを押してもその場から動かないという設定でしょうか?
このVBAを設定したブックは右になりましたが、その他のブックは入力後の移動をしなくなりました。
・・・それでも理想に近づきました。(´・∀・)
少し勉強してみます。

お礼日時:2006/05/08 19:06

#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
イベントに貼り付ける。
    • good
    • 0
この回答へのお礼

いっぱいありがとうございました!
まだ成功していませんが、VBAに興味を持ちました。
勉強と練習してみます。

お礼日時:2006/05/08 18:58

VBA を使っても良いと言うことであれば、


#3の言われるプロパティを
ThisWorkbook の Workbook_Open() (あるいは、Workbook_Activate()とか)で強制的に設定するようにしておけば良いような気がします。

この回答への補足

ありがとうございます!でもVBAって使った事が無いんです。
少し勉強してみます。
もしお時間がありましたら、やり方教えていただきたいんですが・・・。

補足日時:2006/05/04 23:25
    • good
    • 0

エクセルVBAでは、Returnキーを押した後に動く方向を


MoveAfterRetun(プロパティ)で設定・取得できますが、Object.MoveAfterRetun
で記述します。このObjectはApplicationしか許されません。ApplicationとはエクセルVBAではエクセルそのものです。
WorkBookやWorkSheetは許されないので、エクセルに設定ーー>各ブックに影響が及ぶとなると思います。ある時点で考ると、各ブック単位に別設定はできないということになるでしょう。
    • good
    • 0
この回答へのお礼

そうですか・・・。(-ω-。`)
ありがとうございました!
マイクロソフトさんがどうにかしてくれない限り無理なんですね~・・・?

お礼日時:2006/05/02 21:49

ツールからオプション、編集で「入力後にセルを移動する」には、「上下左右」しか、ありませんね~。


入力するセルの範囲を選択してから行うと、右・下、どちらにも移動しますので、こんな方法では如何でしょうか。

この回答への補足

そうですね、範囲選択とかTabを使ったりとか、方法はありますが・・・。
会社のPCの場合、複数の人間が使うので、上司に設定を変えないでと言い辛いんですよね。
そのうえみなさんこういった小技を知らないし覚えてくれないんです。

補足日時:2006/05/02 21:15
    • good
    • 0

入力後右に移動するように設定すると、他のエクセルファイルにも反映してしまうのですが、




ここの部分がよくわからないので
もう少し細かく説明していただけますでしょうか?
移動ってなんですか?何を?

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

この回答への補足

あ、すみません!
ツール→オプション→編集
のところに入力後に移動するセルの方向、というのがありますよね。
それを右に設定すると、全てのエクセルファイルが右になるんです。
セルへの文字入力が終わってエンターを押したときの事です。

補足日時:2006/05/02 21:10
    • good
    • 0

このQ&Aに関連する人気のQ&A

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

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QExcelでEnter キー後のセル移動方向変更

Excelで、「Enter キーを押した後にセルを移動する(M)」 の 「方向」 を 「右」 にする設定があります。
これを、Bookを開いたときにそのBookに限って有効になるようにしたいのですが、Sheetのコードに入れておくなど方法がありますか。
教えてください、よろしくお願いします。

Aベストアンサー

>Sheetのコードに入れておくなど方法がありますか。
特定のシートの特定の範囲だけ「右方向」に移動することも出来ますよ
以下、目的のシートモジュールに貼り付けてお試し下さい
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  'C10:H20セル範囲内なら右移動
  If Not Intersect(Target, Range("C10:H20")) Is Nothing Then
    Application.MoveAfterReturnDirection = xlToRight
  Else
    '設定範囲以外は下移動します。
    Application.MoveAfterReturnDirection = xlDown
  End If
End Sub

Qエクセルでエンターを押すと任意のセルに移動は出来ますか?

エクセルでエンターを押すと任意のセルに移動は出来ますか?
A1のセルでエンターを押すとC1に移動するようにしたいです。
宜しくお願いします^^

Aベストアンサー

No.2の補足に対する回答です

Private Sub Worksheet_Change(ByVal Target As Range)
 Select Case Target.Address(False, False)
  Case "A1"       'このセルが変更されたら---(1)
   Range("C1").Select 'このセルに移動する---(2)
  Case "C1"       'このセルが変更されたら---(1)
   Range("A2").Select 'このセルに移動する---(2)
  Case "A2"       'このセルが変更されたら---(1)
   Range("C2").Select 'このセルに移動する---(2)
  Case Else
 End Select
End Sub

もし、A列を変更した場合に同じ行のC列、C列を変更した場合に次の行のA列というロジックであれば、
Private Sub Worksheet_Change(ByVal Target As Range)
 Select Case Target.Column
  Case 1 'A列が変更されたら---(1)
   Cells(Target.Row, 3).Select 'C列の同じ行に移動する---(2)
  Case 3 'C列が変更されたら---(3)
   Cells(Target.Row + 1, 1).Select 'A列の次の行に移動する---(4)
  Case Else
 End Select
End Sub

No.2の補足に対する回答です

Private Sub Worksheet_Change(ByVal Target As Range)
 Select Case Target.Address(False, False)
  Case "A1"       'このセルが変更されたら---(1)
   Range("C1").Select 'このセルに移動する---(2)
  Case "C1"       'このセルが変更されたら---(1)
   Range("A2").Select 'このセルに移動する---(2)
  Case "A2"       'このセルが変更されたら---(1)
   Range("C2").Select 'このセルに移動する---(2)
  Case Else
 ...続きを読む

QエクセルVBA 文字を入力したら右へ移動 文字を入力せずにエンターを押しても右へ移動させたい

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

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つ移動するというようにしたいのですが、
どのようにしたらよいでしょうか?

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

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 ...続きを読む

Aベストアンサー

こんにちは。

既存の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 メソッドあたりを扱うことになると思いますが、
管理的に難しめです。
何故、その機能が必要なのか、補足説明頂ければ、
それに合わせた形で再度検討してみます。
取り敢えず、以上です。

こんにちは。

既存のApplication.MoveAfterReturn、Application.MoveAfterReturnDirection
を扱う記述やWorksheet_Changeイベント等すべてを排除した上で、
ThisWorkbook モジュールに以下の記述を貼り付けます。
この方法であれば、
 ブックを閉じた後、
 同時に開いた他のブックで作業する時、
既定の下方向へのカーソル移動へと設定を戻します。
コードを貼付けた直後は、Workbook_WindowActivate
が呼び出されるまで何もしませんから、
最初だけ、
Application.MoveAfterReturnDirection = xlT...続きを読む

QExcel VBA あるセルでENTERを押すと特定のセルへ移動したい

Excel VBAで例えばセル"A2"をセレクトしている状態で
「ENTER」を押すとB5に自動的にセレクトすることはできないでしょうか?

Worksheet_Change関数を使おうと思ったのですが
"A2"の中身が変化しないと発動しません。

Worksheet_SelectionChange関数を使って"A2"を選択している状態で「ENTER」を押すと"A3"が選択されることを利用し、
「"A3"が選択されたら"B5"に飛ぶ」
も考えたのですが、マウスやキーボード操作で"A3"を
選択すると"B5"に飛んでしまうので、これも使えません。

何か対策案はないでしょうか。ご教授よろしくお願いします。

Aベストアンサー

こんばんは。

これは、定番のコードですが、私は、それに、もう少し工夫を凝らしてみました。
本来は、クラスによるインスタンスが良いとは思いますが、それを一般的にお勧めするには、ちょっと荷が重いような気がしました。

'<標準モジュール>

Private Sub ReturnDirectrion2SelectCell()
 If ActiveCell.Address(0, 0) Like "A2" Then
  Range("B5").Select
 Else
  'Original ReturnDirection の再現
  On Error Resume Next
  Select Case Application.MoveAfterReturnDirection
  Case xlDown
    ActiveCell.Offset(1).Select
  Case xlToRight
    ActiveCell.Offset(, 1).Select
  Case xlToLeft
    ActiveCell.Offset(, -1).Select
  Case xlUp
    ActiveCell.Offset(-1).Select
  End Select
 End If
End Sub

Sub SetKeys()
  '設定用
  Application.OnKey "~", "ReturnDirectrion2SelectCell"
  Application.OnKey "{Enter}", "ReturnDirectrion2SelectCell"
End Sub
Sub SetOffKeys()
 '解除用
 Application.OnKey "~"
 Application.OnKey "{Enter}"
End Sub

'-----------------------------------------

自動設定が必要な場合は、以下のコードを加えてください。

'-----------------------------------------
'<標準モジュール>
Sub Auto_Open()
 Call SetKeys
End If
Sub Auto_Close()
 Call SetOffKeys
End If
'-----------------------------------------

なお、現在の設定では、全てのブックの全てのシートに同じように適用されます。Auto_Open等の代わりに、例えば、Worksheet_Activate や Workbook_SheetActivateなどに、SetKeysをCall し、Worksheet_DeactivateやWorkbook_SheetDeactivateに、SetOffKeysをCallするようにすると良いと思います。

こんばんは。

これは、定番のコードですが、私は、それに、もう少し工夫を凝らしてみました。
本来は、クラスによるインスタンスが良いとは思いますが、それを一般的にお勧めするには、ちょっと荷が重いような気がしました。

'<標準モジュール>

Private Sub ReturnDirectrion2SelectCell()
 If ActiveCell.Address(0, 0) Like "A2" Then
  Range("B5").Select
 Else
  'Original ReturnDirection の再現
  On Error Resume Next
  Select Case Application.MoveAfterReturnDirection
  ...続きを読む

Q値を入力後、自動的にアクティブセルが移動するマクロ

(1)エクセルファイルを開けたときのアクティブセルを設定。

(2)そのセルに値を入力後、ENTERで違うセルに移動。
 (違うセルは、隣接していない)

(3)入力後、ENTERでまた違うセルに移動。

(4)数個のセルに入力後は、任意のセルに値を入力できるようにする。

マクロでできることなのかわかりませんが、
よろしくお願いします。

Aベストアンサー

規則性がわかりませんが、マクロを使わなくても、同様なことは可能ですよ。

CTRLキーを押しながら、入力したい順に該当セルをクリックする。

Tabキーを1回押すと、最初に選択したセルに入力できます。入力完了後Enterキーを押すと、2番目に選択したセルに入力できます。入力完了後Enterキーを押すと、3番目に選択したセルに入力できます。・・・

QEXCEL あるセルに数字が入力されれば既存マクロ実行させたい

ボタン等のグラフィックオブジェクトのマクロ実行は簡単なのですが、
ある位置のセルにデーターが入力されれば、
既存のマクロを自動実行させることできますか?

Aベストアンサー

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
if Range(ある位置) <>"" then call 既存のマクロ名
End Sub

ある位置と既存のマクロ名を変更して使ってみてください。
あと このVBAは 操作するワークシートのほうに記述します。

Q別のシートから値を取得するとき

Worksheets("シート名").Activate
上記のを行ってから別シートの値を取得するのですが、
この処理を行うと指定したシートへ強制的にとんでしまいます。。。

※イメージ
For ~ To ~
  Worksheets("シートA").Activate
  シートAの値取得
       :
  Worksheets("シートB").Activate
  シートBの値取得
Next

このイメージ処理を行うとものすごい勢いで画面がチカチカします。。。
シートを変えずに他のシートから値を取得する方法はないのでしょうか。
教えてください!

Aベストアンサー

Worksheets("シートA").Range("A1")

みたいな感じでできませんか?

Q【Excel VBA】マクロでExcel自体を終了させたい

環境:WindowsXP、Excel2003

マクロでエクセルを終了(ブックを閉じて、アプリケーション自体も終了)させたいのですが、以下のコードではアプリケーションが閉じてくれません。

ThisWorkbook.Close
ExcObj.Quit
Application.Quit

どこか悪いところはありますでしょうか?

よろしくお願いします。

Aベストアンサー

普通に考えれば質問者のコードで上手くいきそうですが
hana-hana3さんの回答にもあるようにThisWorkBook.Closeでコード終了となりますので
Application.QuitをThisWorkBook.Closeの前にもってこないといけません。
Application.Quitはそれがあるプロシージャのコードが全て終わるまで
その実行を保留するちょと特別動作をします。

'-------------------------------------
 Application.Quit
 ThisWorkbook.Close
'-------------------------------------
 
 

QエクセルのIF関数で、文字が入力されていたならば~

エクセルのIF関数で文字が入力されていたならば~、という論理式を組み立てたいと思っています。

=IF(A1="『どんな文字でも』","",+B1-C1)

A1セルに『どんな文字でも』入っていたならば、空白に。
文字が入っていなければB1セルからC1セルを引く、という状態です。

この『どんな文字でも』の部分に何を入れればいいのか教えてください。

またIF関数以外でも同様のことができれば構いません。

宜しくお願いします。

Aベストアンサー

=IF(ISTEXT(A1),"",B1-C1)

でどうでしょうか?

Q【エクセル】指定したセルに入力することで、別の特定のセルに決まった文字を表示させるには?

社用データを作る際の手間を省こうとしたのに、かえって難しくなってしまいました(-"-;)
分かりにくい質問で恐縮ですが、よろしくお願いします。

現在Excel2003を使っています。
「指定したセルに文字・数字問わず入力があった場合、特定のセルに特定の文字を表示させる数式(または方法)」は無いでしょうか。
(できれば指定したセルに入力が無い限り、特定文字を表示させるセルは非表示のままにしたいと思っています)

例えば、「A1のセルに『○田×男(人名など)』と入力した時、B1のセルに『様』と表記させる」と言った具合です。
(このとき、A1に入力が無ければB1も空白のままにしておきたいのです)

手動で入力した方が早そうな気もしますが、応用次第で他の表や作業もスッキリしそうなので、手があれば是非ご教授下さい。

Aベストアンサー

間違えました。

B1 に
=IF(A1="","","様")

でした。


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

人気Q&Aランキング