
こんにちは。
EXCELでENTERキーでセルの移動マクロを使いたいのですが、下記のマクロで改良を教えてもらいたいと思います。
まず、最初は必ず、セルB5にフォーカスしたいということ。そうして、できればOFFSETを使わないで、rangeかcellを使いたいのですが、お願いします。
Sub セル移動()
Range("B5").Select
Select Case ActiveCell.Column
Case 1
ActiveCell.Offset(1, 1).Activate
Case 2
ActiveCell.Offset(2, 2).Activate
Case 3
ActiveCell.Offset(1, 1).Activate
Case 4
ActiveCell.Offset(1, 1).Activate
End Select
End Sub
No.1ベストアンサー
- 回答日時:
根本的に
質問例はSUB ENDのプログラムになってます。
すなわち人間がF5等押すとか、メニューの実行をクリックして実行するか、他のルーチンから飛んでくるか、しないと働きません。それでよいのですか?
私はイベントプロシージュアーで組まないと、質問にふさわしくなく、便利でないと思います。
ーーーー
さてワークシートのイベントですが、
>ENTERキーでセルの移動
したいのでしょうが、エンターキー押し下げをきっかけにするイベントにするイベントは、現状(E2002)設けられていないように
思います。
Changeイベントで代用するとしても、ENTERでなく、TABや矢印キー
でセルを移動しても、コピー貼り付けしても、発動します。
その辺考えましたか。
毎回質問のルーチンを実行するために、別のコマンドボタン等をおすのは、便利性という意味から、意味がない。
>できればOFFSETを使わないで、rangeかcellを使いたいのですが
も質問で使っていながら、こう表現するのは、理由を帰すべきと思う。
結局何がしたいのか、質問に良く表現されてない。
ーーー
今B5ならC2に
今C2ならd5のように飛び飛びに、自動でカーソルを移動して
ほしいということかな。
私が過去に載せた回答と似たものを上げてみます。
Private Sub Worksheet_Change(ByVal Target As Range)
f = Array("$B$5", "$C$2", "$D$5", "$F$2")
t = Array("$C$2", "$D$5", "$F$2", "$B$5")
For i = 0 To UBound(f)
If Target.Address = f(i) Then
Range(t(i)).Select
End If
Next
End Sub
B5->C2ー>D5->F2ー>B5を繰り返します。
2つのArrayの中は、Fからtに飛ぶ仕組みで、その組み合わせで作れば増やしたり、どこへでも飛ばせる。
これとて使えるかどうか。
カーソルが動く、そしてデータが入れられる。
そこで何をするか?
またB5に戻って、データの一揃いが揃ったとき
誰が(人手かプログラムか)そのデータで何をどうするのじか?
書いてないが、そこと関連しないと、この質問の回答は生かせないと
思う。
思い付いたニーズをとりあえず、質問に出した感じがした。
ありがとうございました。
結構、いろいろな方法があります。
私も、質問をしたあと、自分でもサイトを探しました。
皆さんの技法を織り交ぜながら、ENTERでセル移動のマクロができました。ありがとうございました。
No.6
- 回答日時:
5 のWendy02です。
#5の回答の内容、ご質問を良く読んでいなかったので、リンク先は用が立ちませんね。
良くご質問を読むと、何をされたいのか、あまりはっきりしていませんでした。スミマセン。
最初にセルB5をSelect した後の順序立てが見えてきませんでした。
ActiveCell.Offset(2, 2).Activate
↓
ActiveCell.Offset(1, 1).Activate
↓
no destination...(どこに行くの?)
No.5
- 回答日時:
こんにちは。
ご質問を細かくは見ていませんが、以前、このようにして作りました。
http://oshiete1.goo.ne.jp/kotaeru.php3?q=1737730
考え方は、#2さんのご指摘のとおりですが、
>エンターキーは通常にも使うものですので色んなバグが出てきそうですので止めた方が無難です。
特に、支障はないはずです。
要するに、以下のようにしてあげます。
Application.OnKey "~", 移動のマクロ
Application.OnKey "{Enter}", 移動のマクロ
No.4
- 回答日時:
#1です。
他の質問を回答しようとしたら締め切られました。
>EXCELで特定のセルのみ移動するには?
そこで#1より簡単にできそうなので上げます。
下記の後半部分です。
セル保護してない場合と同じく、CTRLを押しつつ、マウスでセルをクリックしていくと、各セルにデータ入力後に、先ほどクリック指定した順序で飛んでくれます。
毎回、CTRLきを押しつつ順序にクリックするのが面倒なら
シートにコマンドボタンを1つ貼り付け、クリックイベントに
下記を貼り付け作ればよい。
Rangeのカッコの中の指定と順序が肝心です。
Private Sub CommandButton1_Click()
Range("F8,B3,C5,C7,B9,C11,B3").Select
Range("B3").Activate
End Sub
No.3
- 回答日時:
上記のマクロだと初めにB5に強制移動、Select文で結果が2でD7(B5から右2,下2)に移動で終了ですね。
Enterキーを押すごとには上記のマクロは動きません。
ショートカットキーの登録は可能ですが...B5->D7の移動を繰り返すだけです。
実際はどのような順番で移動したいのですか?
B5->C5->D5->A6->B6->C6->D6....でしょうか?
これなら「ツール」「オプション」「編集」で「入力後にセルを移動する」の「方向」を「右」にして
移動する範囲B5以降の移動するセルを選択して「セルの書式設定」「保護」「ロックする」のチェックをはずして
「ツール」「シートの保護」(2002以降は「ロックしたセル範囲を選択する」のチェックをはずす。)を実行してください。
マクロではB5への強制移動だけでいいはずです。
No.2
- 回答日時:
1.ショートカットキーの割当
エンターキーでマクロを実行させたいということでしょうか?
エンターキーをフックしてしまえば可能ですが高度なものになりますし、エンターキーは通常にも使うものですので色んなバグが出てきそうですので止めた方が無難です。
通常のショートカットキーはCTRL(+SHIFT)+ローマ字のどれかで設定します。マクロのオプションから設定で簡単にできます。
あるいはボタンを配置してそのボタンを押したら実行されるとか。
2.最初にB5にフォーカス
Range("B5").Select
まずこの時点でB5がアクティブになってしまいますので以降の判別はすべて「Case 2」で適用されてしまいます。よってそもそもの仕様を改める必要があります。
例えばマクロを2つに分けて、最初のマクロでB5がアクティブになって何かユーザーが操作した後にて別のマクロを実行するとか?
3.Offsetを使わない
この手のコードはoffsetの方が何かと便利なはずですが、絶対参照で行うとどこか一つのセルをずらした場合、それ以降も全て修正する必要があります。まぁこのケースだとどういう使用状況を想定しているのかが不明ですので何とも言えませんが。
どうしても絶対参照が良いのであれば
ActiveCell.Offset(1, 1).Activate
↓
Range("A1").Activate
のように修正しましょう。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
Excel VBA あるセルでENTERを押すと特定のセルへ移動したい
Excel(エクセル)
-
エクセルでエンターを押すと任意のセルに移動は出来ますか?
その他(コンピューター・テクノロジー)
-
値を入力後、自動的にアクティブセルが移動するマクロ
Excel(エクセル)
-
-
4
エクセルのVBA 特定のセルでエンターキーでマクロ実行
Excel(エクセル)
-
5
Enterキーでマクロを起動さす。
その他(ソフトウェア)
-
6
エクセルVBAを使いセルを指定した順番に異動させ
Excel(エクセル)
-
7
Enterキーで順番にセルの移動する。
Visual Basic(VBA)
-
8
エクセルでエンターを押すと隣のセルではなく指定したセルに!
Excel(エクセル)
-
9
Excel2010でエンターキーにマクロ割り当て
その他(プログラミング・Web制作)
-
10
【エクセルVBA】一部シートのみエンターでカーソルが右にすすむようにしたい
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルの複雑なシフト表から...
-
エクセルの関数について
-
【マクロ】実行時エラー '424':...
-
【マクロ】変数に入れるコード...
-
エクセルのリストについて
-
【マクロ】数式を入力したい。...
-
【マクロ】【相談】Excelブック...
-
【マクロ】【配列】3つのシー...
-
【マクロ】元データと同じお客...
-
Office2021のエクセルで米国株...
-
【マクロ】左のブックと右のブ...
-
【画像あり】オートフィルター...
-
他のシートの検索
-
エクセルのVBAで集計をしたい
-
vba テキストボックスとリフト...
-
【関数】3つのセルの中で最新...
-
【マクロ】excelファイルを開く...
-
エクセルシートの見出しの文字...
-
LibreOffice Clalc(またはエク...
-
【マクロ】別ファイルへマクロ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【マクロ】元データと同じお客...
-
エクセルの関数について
-
【画像あり】オートフィルター...
-
エクセルのVBAで集計をしたい
-
エクセルのリストについて
-
【マクロ】数式を入力したい。...
-
【マクロ】【相談】Excelブック...
-
Office2021のエクセルで米国株...
-
【マクロ】実行時エラー '424':...
-
他のシートの検索
-
エクセルの複雑なシフト表から...
-
【マクロ】【配列】3つのシー...
-
vba テキストボックスとリフト...
-
【マクロ】左のブックと右のブ...
-
【マクロ】変数に入れるコード...
-
エクセルシートの見出しの文字...
-
【マクロ】別ファイルへマクロ...
-
【関数】同じ関数なのに、エラ...
-
Amazonでマイクロソフトオフィ...
-
ページが変なふうに切れる
おすすめ情報