• ベストアンサー

(エクセル)オブジェクトをtabキーで選択する順番は、自由に変更できますか?

エクセルで、オブジェクトの「吹出し」を複数作成しました。tabキーを押すと、次のtabに飛んでくれますが、これを任意の順番に変更することは可能でしょうか。普通に作成すると、新しく作成したものから古いものにさかのぼる順で選択されています。この性質を利用して、選択したい順の逆順で作っていけば良いのですが、すでに相当数を作成しているため、一から作りなおさず選択順だけを変えたいと思っています。よろしくお願いします。

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

  • ベストアンサー
回答No.8

#4(misatoanna)です。 > このマクロでは、最後のオブジェクト選択状態でマクロを実行すると > エラーになります。 ごめんなさい。こちらではエラーを再現できません。 > Select Case Odr >  Case Is = Ttl  'A >   Nxt = 1 >  Case Else    'B >   Nxt = Odr + 1 > End Select この部分ですが、 A)選択したオブジェクトの順番が最前面(順位番号がオブジェクト数と   一致)なら、次に選択するのは最背面のオブジェクト。 B)それ以外ならひとつ前面のオブジェクト。 という処理です。 こちらでは、モジュールどおりに、最後のオブジェクトを選択した状態で 実行すると最初のオブジェクトに戻り、何回でも循環できるのですが。 エラーが起きたときに VisualBasicEditor を開いてみてください。 どこでエラーが起きて、どのようなメッセージが出ますか?

balibali55
質問者

お礼

#4(misatoanna)さん、ご連絡ありがとうございます。 私のやり方が悪かったのか、今度は何週でも循環でき、当初やりたいとイメージしていた通りの結果になりました。辛抱強くお付き合い頂き感謝します。

その他の回答 (7)

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.7

>選択したい最後のオブジェクトが1度で選択され、 >何度実行してもそれ以外のオブジェクトがアクティブになりません。 そのまま、Tabキーを操作してみてください。 TabIndex(実際にはありません)が、1の図形から順にTab移動しないでしょうか? Tab移動の順番は、シートに貼り付けられた順になります。 従って、Cutして、PasteすることでTab移動順が最後に変更なります。 吹き出し以外に図形がある場合、それらの図形の後に、吹き出しのTab順がくることになります。 >それをテキストボックスの最初の2数字(01~)の順にtabを飛ばして>1つずつ書いてあるコメントを確認していく で、本当にやりたいことはこれですね。 下記に差し替えてください。     If stxt = i Then       MsgBox shp.TextFrame.Characters.Text '      shpleft = shp.Left '      shptop = shp.Top '      shp.Cut '      ActiveSheet.Paste '      Selection.ShapeRange.Left = shpleft '      Selection.ShapeRange.Top = shptop       Exit For     End If

balibali55
質問者

お礼

xls88さん、マクロ実行できました。メッセージボックスにコメントを表示できるようにして頂いたんですね。この機能はとても重宝します。辛抱強くお付き合い頂きありがとうございました。

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.6

>テキストボックスの最初の2文字が、 >01から始まる2桁の半角数字で、 >この数字が選択したい順番に昇順になっています。 上記内容を手掛かりに対象オブジェクトを操作します。 従って、今度のマクロはオブジェクトを選択しておく必要がありません。 Sub test3()   Dim shp As Shape   Dim shpleft As Double   Dim shptop As Double   Dim stxt As String   Dim i As Long   Application.ScreenUpdating = False   For i = 1 To ActiveSheet.Shapes.Count     For Each shp In ActiveSheet.Shapes       On Error Resume Next       stxt = val(Left(shp.TextFrame.Characters.Text, 2))       On Error GoTo 0       If stxt = i Then         shpleft = shp.Left         shptop = shp.Top         shp.Cut         ActiveSheet.Paste         Selection.ShapeRange.Left = shpleft         Selection.ShapeRange.Top = shptop         Exit For       End If     Next shp   Next i   Application.ScreenUpdating = True End Sub

balibali55
質問者

お礼

xls88さん、度々ありがとうございます。 今回のマクロを実行すると、選択したい最後のオブジェクトが1度で選択され、何度実行してもそれ以外のオブジェクトがアクティブになりません。やりたいことは、1画面に収まりきらない数の吹出しがシートの中に散らばっていて、それをテキストボックスの最初の2数字(01~)の順にtabを飛ばして1つずつ書いてあるコメントを確認していく、ということです。よろしくお願いします。

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.5

これも雑ですが、同じシート内で処理するようにしてみました。 Tag移動順に、オブジェクトを選択しておいて、マクロを実行してください。 マクロは大丈夫ですか? Tag移動順の規則とか何か手掛かりになるものはありますか? 例えば、オブジェクトの左上角がかかっているセル番地に規則性があるとか、もし、あれば教えてください。 Sub test2()   Dim shp As Object   Dim shpleft As Double   Dim shptop As Double   For Each shp In Selection     shpleft = shp.Left     shptop = shp.Top     shp.Cut     ActiveSheet.Paste     Selection.ShapeRange.Left = shpleft     Selection.ShapeRange.Top = shptop   Next End Sub

balibali55
質問者

補足

短時間に2度もご回答頂きありがとうございます。vbaはあまり詳しくありませんが、ご指定のvbaを実行してみました。 やり方が的を射ていないのか、オブジェクトを選択したい順にshiftを押しながら選択した後、vbaを実行したところ、選択した5つのオブジェクトの最後のものがアクティブになりました。もう一度実行すると、「オブジェクトは、このプロパティまたはメソッドをサポートしていません」というエラーメッセージが表示されました。 なお、オブジェクトの位置に規則性はなく、強いて言えば、吹出し(オブジェクトは全て吹出し)の中テキストボックスの最初の2文字が、01から始まる2桁の半角数字で、この数字が選択したい順番に昇順になっています。

回答No.4

#2さまのご回答のように、選択順は「上から下。同じ上位置なら左から右」で、 この順番は一般機能では変えられないのではないでしょうか。 次のようなマクロを記述してみました。 1.オブジェクトの順番を入れ換えるマクロ。  [Shift]を併用して選択したい順にオブジェクトを選択して実行します。  オブジェクトの数が多い場合は、数回に分けて操作してもOKです。  Sub SetOrder()   Dim shp   For Each shp In Selection    shp.ShapeRange.ZOrder msoBringToFront   Next  End Sub 2.オブジェクトを順に選択するマクロ  選択されているオブジェクトの、ひとつ前面にあるオブジェクトを選択します。  Sub SelectNext()   Dim Ttl, Odr, Nxt   Ttl = ActiveSheet.Shapes.Count   Odr = Selection.ShapeRange.ZOrderPosition   Select Case Odr    Case Is = Ttl     Nxt = 1    Case Else     Nxt = Odr + 1   End Select   ActiveSheet.Shapes(Nxt).Select  End Sub 3.[Tab]キーにマクロ(SelectNext)を割当てるマクロ  実行後、[Tab]キーを押すたびに上記マクロ(SelectNext)が実行されます。  Sub SetKey()   Application.OnKey "{Tab}", "SelectNext"  End Sub 4.[Tab]キーの機能をデフォルトに戻すマクロ。  Sub ResetKey()   Application.OnKey "{Tab}"  End Sub 新規ツールバーにユーザー設定ボタンを幾つか置いて、必要なマクロを登録して おくとラクですね。

balibali55
質問者

お礼

ご返信ありがとうございました。 マクロ1,2を実行し、選択したい順にオブジェクトを選択することができました。もしお時間があればもう一つ教えていただきたいのですが、このマクロでは、最後のオブジェクト選択状態でマクロを実行するとエラーになります。これを、最初のオブジェクトに戻って何回転でも循環できるようにすることはできるでしょうか。よろしくお願いします。

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.3

試しに大雑把ですが、マクロを組んでみました。 Sheet1のオブジェクトをSheet2に選択順にコピーします。 Tab移動順で、オブジェクトを選択しておいて、マクロを実行してください。 Sheet2に貼り付けられたオブジェクトは Sheet1のオブジェクトを選択した順番でTab移動します。 Sub test1()   Dim shp As Object   Dim saddress As String      Application.ScreenUpdating = False   For Each shp In Selection     Worksheets("Sheet1").Select     saddress = shp.TopLeftCell.Address     shp.Copy     Worksheets("Sheet2").Select     Range(saddress).Select     ActiveSheet.Paste   Next   Application.ScreenUpdating = True End Sub

  • bonaron
  • ベストアンサー率64% (482/745)
回答No.2

当方2003です。 エクセルは得意ではないのですが どうやら、 上から下へ、同じ上位置なら左から右へ という順序で移動するようです。 作成した順や、名前は関係ないようですし タブオーダーのようなプロパティも見つかりません。 任意の移動は無理じゃないでしょうか。

balibali55
質問者

お礼

ご返信ありがとうございました。

  • hatiboo
  • ベストアンサー率42% (257/602)
回答No.1

こちらのバージョン2002ではtabで任意の移動設定はできないみたいでした。他のバージョンではどうなのでしょう コピーしたり移動したりすると移動の規則性がわかりません シェイプNOは変更できず、シェイプNO順に移動もしません 単に逆方向移動であれば、「shift」+「tab」で移動するのですが・・・・

balibali55
質問者

お礼

ご返信ありがとうございました。

関連するQ&A

  • エクセル2003での選択できないオブジェクト

    グラフや様々なオブジェクトを載せたエクセルデータを編集しています。 列や行を削除したり追加していてだとは思いますがかすかに見えているけれど 選択できないオブジェクトがあります。 オブジェクト選択での白い矢印で囲っても駄目。 ジャンプでも駄目。 シートも保護していません。私が1から作成したので難しいロックはかかっていません。 何をしても消せないのですが、印刷に出てきてしまうので困っています。 何か方法はありませんか?

  • エクセルの使い方 オブジェクトの選択

    エクセル オブジェクトの選択 はじめまして 宜しくお願いします。 マイクロソフトのエクセル2003から2007へ変えました。 このバージョンアップはかなり変更があるみたいで、いろいろ覚え直しておりますが、 一部 どうしても発見できないコマンドが何処にあるか教えてください。 ケースバイケースだとは思いますが、2003の”オブジェクトの選択”(図形の調整Rの脇にありました。)全ての図形や多くの図形を選択する時に使いたいのですが、2007でなかなか見つかりませんでした。何処にあるのか教えていただければ幸いです。 以上

  • イラレで選択した複数のオブジェクトを別のレイヤーにまとめて移す方法ってありますか?

    イラレCS2を使っています。 複数のオブジェクトを選択して、まとめて別のレイヤーに移す方法ってあるのでしょうか? いつもは、新規レイヤーを作成後、複数のオブジェクトを選択し、 レイヤーウインドウ上でマーカーされたオブジェクトをドラッグして、 作成したレイヤーに移す、 ということをしているのですが、オブジェクトの数が多いときには ものすごく時間がかかってしまいます。 どうすればもっと簡単にできますでしょうか?

  • エクセルVBAのTaBに関してです。

    エクセルVBAのTaBに関してです。 こないだからここで教えてもらいながらちょっとしたアプリ(検索(複数キーワード)、削除、更新、新規)ができました。教えて頂いた方ありがとうございます。 さて、完成の段階で、各オブジェクトにTabの設定を行おうとしました。 (このアプリはコンボ、テキスト、チェックなどで構成されています。)ところが何度Tabの番号の順番を設定しても元に戻り、順番どおりTabが機能しません。 特にチェックボックスは25くらい使用していますが、何度TabIndexの値を変えても1のままです。 オブジェクトが混合で使用されている場合、TabIndexの設定には何か別のプロパティも設定しないとだめなのでしょうか。 少し前に作ったチョー簡単アプリはテキストボックスだけだったので、TabIndexとTabbehavierをFalseにしてできましたが。 テキストボックスからチェックボックスにTabで移動するあたりから上手くいかないように思えます。 ご存知の方、原因の分る方教えt下さい、よろしくお願いします。

  • イラレでグループ化されたオブジェクトを選択

    イラレCS5を使っています。 複雑な形状をした複数のオブジェクトがグループ化されたオブジェクトがあるとします。 これの一部を選択したいのですが、 ダイレクト選択ツールを使って、Shiftキーを押しながら選択していくと グループ化されたオブジェクトの中で複数のオブジェクトを同時に選択することが出来ます。 しかしながら、例えば、A、B、Cというオブジェクトを選択した状態で C、D、Eというオブジェクトを選択すると、 Cの選択が外れてしまいます。 簡単なオブジェクトだとCだけ選択し直せば良いのですが、 複雑なオブジェクトだとこういう操作は難しくなってしまいます。 どうすれば、A、B、Cというオブジェクトを選択した状態で C、D、Eというオブジェクトを選択してもABCDEすべてのオブジェクトが 選択出来ますでしょうか?

  • Excelで全てのタブを変更する方法を教えて下さい。

    よろしくお願いします。 現在excel2003を使用して書類を作成しています。 各業者さんに発行するためのもので、住所やあて先は異なるのですが、発行日時は共通して同じなのです。 このように、複数タブがある場合で、共通の項目があるときに、一度に全てのタブの日付を変えることは出来るのでしょうか?? 現在はまだタブ数が少ないので、何とか手動で対応できているのですが、毎月増えて行くのでこの先とても不安です・・・。 そもそもタブを使うのかが良いのかは分からないのですが、もし可能であれば一度に複数のタブの項目を変更する方法についてアドバイスいただけたらと思います。 また、別の方法でも管理する上でよいやり方などあれば、あわせてアドバイスいただけると幸いです。 どうぞよろしくお願いいたします。

  • オブジェクトの選択(単一/複数選択、グループ)

    グラフを複数製作/修正するような作業を日常的に行っています また、そのグラフにテキストボックスが複数グループ化されていたりグラフが複数グループ化されていたりということもよくあります グラフの名前を与えるとそのグラフに一定の処理をするようなマクロを作ったときに 選択したオブジェクトに含まれるグラフオブジェクトの名前を上記マクロに渡してくれるような 仲立ちをするマクロがあればと思っております 1.単一選択/複数選択に対応 2.グラフオブジェクト以外が含まれていても無視するだけでエラー終了しない 3.グループ化されたオブジェクトがあればその中のグラフオブジェクトまで探す という動きを実現したく思っています エクセルのバージョンは2007(2003も利用することができる環境です) 現状ではシート上の全てのグラフに一括処理をするか 単一選択したグラフに処理をするかの二種類のマクロまで作ることができます

  • excelでオブジェクトの位置を知りたい

    ワーシート上にオートシェイブで描かれた図形が複数個あり、同じマクロに登録されている場合に、任意のオブジェクトがクリックされたとき(マクロが動いたとき)に、マクロ内でどのオブジェクトが選択されたかを知る方法がありますか? できれば、そのオブジェクト(の左上端)の置かれているセルの列数、行数が知りたいのですが。

  • TABキーをおしっぱなしにしてもカーソル移動しない

    エクセルやその他アプリで、 TABキーをおしっぱなしにすると、通常、ダーッと、いっきにカーソル移動しますが、 テンキーをSANWAサプライ NT-12UH2SV に変えたら、いっきに移動しなくなりました。 カーソルがひとつ(エクセルだと1セル)しか進みません。 TABキーの移動が多いアプリ操作なので、いちいち一回ずつカチカチ押していると 大変な手間になります。 BSキーは、おしっぱなしにすると、ちゃんといっきにカーソル移動します。 なぜおしっぱなしにしても、複数カーソル移動してくれないのでしょうか? どうすれば直るでしょうか?

  • Excelのオブジェクトの選択ボタンについて

    Excelのオブジェクトの選択機能(ボタン)は、複数の範囲を選択することは出来ないのでしょうか? 図形を多く挿入するのですが、複数の図を一度に整列させたいのです。 しかし、整列させたい図と図の間に動かしたくない図が複数あるのです。 たとえば下記のとおりです。 A1に図1 A2に図x A3に図2 B1に図1 B2に図y B3に図2 C1に図1 C2に図z C3に図2 上記のように各セルに図1、図2を貼り付けると図がセルの中央に来ない(各セルの上の方に張り付く)為、図1、図2のあわせて6個の図を選択して、同時に移動させたいのです。 やはりこの場合は、半分はオブジェクトの選択ボタンで選択し、残り半分はShiftを押して一つずつ選択する方法しかありませんかね。 例は6個の図ですが、実際はもっと多いので楽に出来る方法がないかと思い相談させていただきました。 アドバイスよろしくお願い致します。

専門家に質問してみよう