• ベストアンサー

選択範囲内でアクティブセルを移動する

エクセル 選択範囲内でアクティブセルを移動する方法をご教授ください 保護機能を使って実現するのではなく マクロを使って実現する方法をご教授ください (範囲はA1:R10000までの範囲です)

質問者が選んだベストアンサー

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.4

B3:R18 の場合 B3はColumn=2、Row=3 R18は Column=18、Row=18ですよね したがって   If Target.Cells.Count = 1 Then     ' R列なので変更なし     If Target.Column > 18 Then       ' 18行目までなので変更       If Target.Row > 18 Then         ' B3からなので Cellsの1を3に変更         Cells(3, Target.Column).Select       Else         ' B列からが対象なので CellsのColumnを1から2へ         Cells(Target.Row + 1, 2).Select       End If       Exit Sub     End If     ' こちらも18行に制限     If Target.Row > 18 Then       ' 3行からなので 1を3へ変更       Cells(3, Target.Column).Select     End If   End If といった具合です

tompapa56
質問者

お礼

誠にありがとう御座いました 勉強になりました

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (3)

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.3

Enterが押されたかどうかのチェックは難しいいですが 選択されたセルが A1:R10000の中かどうかは SelectionChangeイベントで取得できます ワークブックかシートモジュールで Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)   ' Target.Cells.Count = 1 選択されたセルが1つの場合をチェック   If Target.Cells.Count = 1 Then     If Target.Column > 18 Then       If Target.Row > 10000 Then         Cells(1, Target.Column).Select       Else         Cells(Target.Row + 1, 1).Select       End If       Exit Sub     End If     If Target.Row > 10000 Then       Cells(1, Target.Column).Select     End If   End If End Sub Enterで右移動をさせたいなら Application.MoveAfterReturnDirection = xlToRight をどこかのタイミングで実行すれば良いでしょう ブックのOpenイベントなどで ・・・

tompapa56
質問者

補足

ありがとう御座います すばらしいです 感謝感謝です 勉強 奮闘中で 大変勉強になります すいません こちらのコードで 折り返し点とか 何処までとかは解るのですが 範囲の始まりA1が解りません例えば範囲がB3:R18ですとどのように成るのでしょうか ご指南ください

全文を見る
すると、全ての回答が全文表示されます。
  • tom11
  • ベストアンサー率53% (134/251)
回答No.2

今ひとつ、意味解りませんが、 もしかして、以下のようなことですか。 Range("a1:r1000").Select Range("b2").Activate 日本語にすると、 a1:r1000の範囲を選びb2をアクティブセルにする。 アクティブセルを別な場所にしたいなら、 そのセルをアクティベイとする

全文を見る
すると、全ての回答が全文表示されます。
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

で、何をされたときにどのように変更したいのでしょう? A1が選択されていて何か数値などの入力があったときなのか このとき どこへ移動したいのか また、水平に移動するとしてR列にあった場合にどこへ移動させるのか 垂直に移動させる場合に 10000行にあった場合にはどこへ移動すのか それとも移動しないのか ・・・ 範囲外のセルが選択された場合に 範囲内のセルへ移動したいのか 選択されるセルが複数あるがそのうち1つが範囲外になった場合の矯正 いろいろな場面が想定できます …

tompapa56
質問者

補足

すいません説明不足で申し訳ありません A1から右にR1 R1から改行A2にそしてR2と言うように 選択させた範囲内でエンターキーでシフトさせたいのですが よろしくお願いいたします

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • アクティブセルが移動しない

    エクセルでマクロを作成したのですがマクロ実行後にアクティブセルが方向キーで移動しない場合があります。(マウスでクリックするとそこへアクティブセルは移動できますが) マクロにはInputBoxがあり正常に処理が進んだ場合はアクティブセルは移動できますが、キャンセルした場合やマクロで規定した値以外を入力した場合にアクティブセルが移動しなくなります。移動しなくなってもそのファイルを閉じて再度開くと正常にアクティブセルは移動できます。 マクロの記述に問題があるとは思っていますがどうしたら良いかわかりません。どうかご教授ください。

  • 【Excel】アクティブセルから決まった範囲を選択する

    エクセルで、アクティブブセルから決まった範囲、 たとえば、セルA10がアクティブになっていれば A10~M10までを、セルB30がアクティブになっていたら B30~N30までを、常に1RX13C分を選択することを 覚えさせるような機能はありませんでしょうか? もしマクロでないと無理なら、マクロを教えていただけますでしょうか。

  • Excel VBA アクティブセルからある一定のセルまでの範囲選択

    Excel VBA アクティブセルからある一定のセルまでの範囲選択 Excel2003を使用しています。 アクティブセルからC列に『計』と入力されている行の1行上のD列までを選択状態にするマクロを作成しようとしています。 C列に『計』と入力されている行は下記のように複数あるので、アクティブセルの行以下に入力されている次のC列の『計』の1行上までとしたいのですが、どのようにコードを書いたらいいでしょうか? 例えば… A2セルをアクティブにしていてマクロを実行するとA2:D3が選択状態に A7セルをアクティブにしていてマクロを実行すると、A7:D9が選択状態になるように という具合です。 わかりづらくて申し訳ありませんが、よろしくお願いします。    A     B     C     D 1  日付    №   品名    金額 2  1/1     1    ○○○   1,000 3  1/2     2    ×××   1,500 4              計      2,500 5 6 7   1/1     5    ○×○   2,000 8   1/3     6    ××○   1,200 9   1/4     7    ×○○   2,500               計      5,700            :            :

  • エクセル マクロ アクティブセル領域を移動させたい

    いつもお世話になっております。 当方マクロ超初心者です。 アクティブセルの大きさは変えずに、 範囲だけを移動させるマクロがつくりたいです。 例えば A1 B1 A2 B2 A3 B3 の6つのセルがアクティブの時に実行すると B3 C3 B4 C4 B5 C5 がアクティブになるマクロを作りたいです。 (この場合だとアクティブセルが 右へ2つ、下へ1つ移動したイメージ) 何卒よろしくお願いいたします。

  • エクセル 選択範囲内から1つのセルに移動する方法

    エクセル2007です。 例えばB1からD10までを選択して、その後にアクティブセルを先頭のB1の一か所だけにする、もしくは末尾のD10の一か所だけにすることは可能でしょうか?キーボードを使って行う方法を知りたいと思っています。 現在、任意の範囲を選択した後、Clrl+ピリオドで選択範囲の中でアクティブセルを移動させ、先頭や末尾に来たところで適当な方向キーを押し、すぐさまそれとは逆方向の方向キーを押してアクティブにしたいセルに移動させています。そのアクティブセルからshift+スペースで行を選択し、そこにClrl+「+」で行を挿入という作業を繰り返していますので、任意の範囲を選択した後そのまま選択範囲を先頭や末尾だけに戻せないことをもどかしく感じています。 今もいろいろと操作方法を試してみたりネットで探してみたりしたのですが分かりませんでした。ご回答どうかよろしくお願いします。

  • エクセル アクティブセルからアクティブセルの行と指定の列を選択するマク

    エクセル アクティブセルからアクティブセルの行と指定の列を選択するマクロをつくりたい。 仕事で、エクセルA列からAL列までのフィールドのデータを毎日50件程登録する要件が出て参りました。 受付表として、受付番号・住所・製品名など登録し、このリストを使用して随時受付内容の確認を致します。 現在、マクロによって、業務負荷を軽減しようと考えております。(マクロはVBのコントロールボックス「再生」ボタンでしか使用できないレベルです) その一つとして、アクティブセルを選択し、コントロールボックスのボタンを押すとアクティブ行の指定列まで移動するマクロを作りたいと思っております。 例)  <D列を指定列とする>   A1を選択 →D1 F10を選択→D10 コントロールボックスは自分で作成する事が出来ます。 どなたか、上記の構文をアドバイス頂けませんでしょうか。 宜しくお願いします。  

  • エクセルのアクティブセルの移動が方向キーで行えなくなりました。

    エクセルのアクティブセルの移動が方向キーで行えなくなりました。 VistaのExcel2007を使っています。 先ごろまではアクティブセルの移動に方向キーが使えていたと思いますが、いつからか(1ヶ月以内)方向キーではアクティブセルは移動せず表示される範囲が全体的に移動するだけです。 無意識にその様に設定を変えてしまったのかもしれませんが復帰する方法が分かりません。何方かご教示いただければ幸いです。

  • VBAアクティブセル行で列範囲選択

    マクロ A1をアクティブセルにして A:H列の行を選択するにはどう書けばいいのでしょうか? この場合A1:H1が選択されればいいのですが range("A:H " & activecell.row).select みたいな感じだとエラーになってしまいます。

  • ExelVBAでのアクティブセルの記述

    Excelマクロ初心者です。 今会社で出勤表のマクロを組んでいるのですが、 「アクティブセルが○列にあった場合、アクティブセルを2行下、30列左に移動させ、それ以外だと右に一つ移動」 という構文は、 「If アクティブセルが○列にある Then ActiveCell.Offset(2, -30).Select Else ActiveCell.Offset(0, 1).Select End If」 となると思うのですが、その肝心な「アクティブセルが○列にある」の記述の仕方が分かりません。 どうかご教授ください。

  • エクセルのマクロで選択範囲の合計を求めたい

    A2:A10に数字があってその一つ下に合計をVBAで出したいのですがどうしたらよいでしょうか。 数字はA2:A50とかA2:A30とか毎回変わります、そしてその下に合計を出します。 マクロで記録したらその選択範囲まで記録されてしまうので 違う範囲が求められません。 とにかくある範囲のセルを選択してその選択範囲の一番下か、または選択範囲の一つ下に合計を出したいのです。 もしくはそのアクティブセル上にある数字の合計です。 どうぞご教示下さい。