こんにちは。
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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) vbaでセルに入力したときに,その横にあるセルを保護し入力不可にするマクロを作りたいです。 2 2022/04/24 20:59
- Visual Basic(VBA) いつもお世話になります 下記のコード実行すると エラーになります わかるかた教えてくれませんでしょう 6 2022/12/17 15:01
- Visual Basic(VBA) Excelのマクロについて教えてください。 3 2022/06/30 09:36
- Excel(エクセル) エクセルマクロで教えてください 2 2022/05/04 09:07
- Visual Basic(VBA) エクセルのVBAでダブルクリックでチェックを入れたあと 1 2022/10/26 20:30
- Visual Basic(VBA) ワークシートチェンジで曜日を表示する方法 1 2023/03/04 21:51
- Excel(エクセル) 並べ替え、ソートの構文がわからない。 お世話になります。VBA超初心者です。 エクセルでワークシート 2 2023/06/28 21:00
- Excel(エクセル) エクセルでの左のセルのコピー 3 2022/07/25 12:31
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2022/10/13 08:41
- Visual Basic(VBA) Sheet「状況」から、分類の年齢別カウント数をSheet「D表」へ転記する下記マクロを作っています 7 2022/12/14 17:57
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
Excel VBA あるセルでENTERを押すと特定のセルへ移動したい
Excel(エクセル)
-
Enterキーでマクロを起動さす。
その他(ソフトウェア)
-
エクセルでエンターを押すと任意のセルに移動は出来ますか?
その他(コンピューター・テクノロジー)
-
-
4
値を入力後、自動的にアクティブセルが移動するマクロ
Excel(エクセル)
-
5
エクセルのVBA 特定のセルでエンターキーでマクロ実行
Excel(エクセル)
-
6
Enterキーで順番にセルの移動する。
Visual Basic(VBA)
-
7
エクセルでエンターを押すと隣のセルではなく指定したセルに!
Excel(エクセル)
-
8
Excel2010でエンターキーにマクロ割り当て
その他(プログラミング・Web制作)
-
9
エクセルVBAを使いセルを指定した順番に異動させ
Excel(エクセル)
-
10
テキストボックス(VBA)でEnterを押したときに作動するマクロ
Access(アクセス)
-
11
VBA コンボボックスで選んだ値を取得するには
その他(Microsoft Office)
-
12
現在のセルの位置を返す関数はありますか
Excel(エクセル)
-
13
A1セルに入力したら、入力時間をA2セルに自動挿入
Excel(エクセル)
-
14
エクセルで、セルに値を入力して確定した時(フォーカスが隣に移動した時)に発生するイベントを教えてください!
Excel(エクセル)
-
15
Excel vbaでキーの操作の入力
Excel(エクセル)
-
16
入力するセルの順番を自動選択(セルの移行)
Excel(エクセル)
-
17
メッセージボックスに表示する文字を大きくしたい
Excel(エクセル)
-
18
worksheetFunctionクラスのVlookupプロパティを取得できません エラーへの対応
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルVBA、別ブックへ転記す...
-
【Excel】数字を3倍にし、なお...
-
エクセルのデーターが2か月前の...
-
エクセル マクロ チェックボックス
-
Excel分析ツールでのポアソン回...
-
エクセル共有したが、アクセス...
-
エクセルの計算
-
【マクロ】顧客番号にて一致さ...
-
(マクロ)データをAブックからB...
-
Excelでセルの値が同じか...
-
UNIQUE関数が使えないバージョ...
-
エクセル:一覧表に存在する文...
-
Excel フィルターを掛けた状態...
-
エクセルを使っていて2024/5/15...
-
Googleスプレッドシートでファ...
-
エクセルで日付を数字+アルフ...
-
エクセル②
-
エクセル 文字を増やしたい。
-
【マクロ】毎回、ファイル名が...
-
[関数得意な方]教えて下さい・...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel 2019 のピボットテーブル...
-
[関数得意な方]教えて下さい・...
-
Excelにてある膨大なデータを管...
-
[関数について]わかる方教えて...
-
Excel初心者です。 詳しい方、...
-
excelの不要な行の削除ができな...
-
エクセル関数に詳しい方教えて...
-
INDIRECTを使わず excelで複数...
-
[オートフィルタ]で抽出された...
-
エクセルの神よ、ご回答を! エ...
-
エクセル関数に詳しい方、教え...
-
各ページの1番上の表示について
-
Excelで写真のような表を作った...
-
エクセルで不等号記号(≠)が上に...
-
数学 Tan(θ)-1/Cos(θ)について...
-
Excel 2019 は、SPILL機能があ...
-
Excelで全角を半角にしたいので...
-
条件付き書式を教えてください
-
Excel フィルターを掛けた状態...
-
[オートフィルタ]の適用範囲の...
おすすめ情報