こんにちは。
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も見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
Excel VBA あるセルでENTERを押すと特定のセルへ移動したい
Excel(エクセル)
-
Enterキーでマクロを起動さす。
その他(ソフトウェア)
-
エクセルでエンターを押すと任意のセルに移動は出来ますか?
その他(コンピューター・テクノロジー)
-
-
4
エクセルのVBA 特定のセルでエンターキーでマクロ実行
Excel(エクセル)
-
5
値を入力後、自動的にアクティブセルが移動するマクロ
Excel(エクセル)
-
6
Enterキーで順番にセルの移動する。
Visual Basic(VBA)
-
7
エクセルでエンターを押すと隣のセルではなく指定したセルに!
Excel(エクセル)
-
8
エクセルVBAを使いセルを指定した順番に異動させ
Excel(エクセル)
-
9
Excel2010でエンターキーにマクロ割り当て
その他(プログラミング・Web制作)
-
10
テキストボックス(VBA)でEnterを押したときに作動するマクロ
Access(アクセス)
-
11
VBA コンボボックスで選んだ値を取得するには
その他(Microsoft Office)
-
12
VBA エンターキーでイベントに入りたい。
PowerPoint(パワーポイント)
-
13
コマンドボタンのEnterイベント後に、フォーカスを移動したい。
その他(Microsoft Office)
-
14
入力するセルの順番を自動選択(セルの移行)
Excel(エクセル)
-
15
メッセージボックスに表示する文字を大きくしたい
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで「ページレイアウト...
-
エクセルの数式バーのフォント...
-
2列に入っているデータを1列...
-
【Excel】別シートから条件に合...
-
EXCELの散布図で日付が1900年に...
-
エクセルをエクセレントに究める
-
F9キーについて。
-
Excelの数式について教えてくだ...
-
数字入力後他の文字等が表示さ...
-
Excelセルを跨いで合計を出す方法
-
計算能力
-
【ExcelVBA】ダブルクォーテー...
-
エクセルのツールバーから数値...
-
エクセル関数を使って
-
エクセル シート表示
-
エクセルでファイルの最終更新...
-
Excel 2019 [オプション]の[リボンのユ...
-
特定の文字列を含む、住所を抽...
-
祝日と土曜、日曜の合計をカウ...
-
Excel分数の表示について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
半角カタカナをヘボン式ローマ...
-
(マクロ)vlookupの元データを同...
-
エクセルで上位バイトのセルと...
-
exselの質問です
-
Excel 大小比較演算子による「...
-
Excel VBについての質問です。
-
エクセルの問題です。絶対値の...
-
非表示列の再表示に失敗
-
職場の人から聞かれており、こ...
-
Excel関数-文字列で自動作成さ...
-
Excelデータをコピペして、ペー...
-
ユーザー定義関数をアドイン登...
-
【マクロ】for next構文について
-
エクセルの日付を編集する
-
【マクロ】VLOOKUPにて参照元に...
-
exselで最小数で並び替える関数
-
libre 表計算ソフトの計算がう...
-
エクセルで表
-
エクセルの表で1年間の曜日を...
-
西暦和暦
おすすめ情報