• ベストアンサー

テキストボックスの移動

図形のテキストボックスをエクセル上に配置しているのですが、これをVBAを使って、配置されている位置を変える方法を探しています。 仕組みとしては、 1)ボタンを押す毎に、予め決めてい置いた位置、2個所~3個所へ移動していく方法 2)ボタン名に場所を示す何らかの名前が付いていて(例えば位置A、B・・・等)そのボタン(位置A)を押す事で予め決めておいたA位置へ、位置Bボタンを押すとB位置へ移動する方法 2点の仕組みで作りたいのですが、どなたか詳しい方、宜しくお願いします。

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

  • ベストアンサー
  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.2

補足です。 ShapeMoveは動かす図形に「myText1」という名前を付けてマクロを書きました。 また、「3個の例です。まず、3個の図形ともシートに正確に配置します」を補足しますと、 1つの図形を指定する3箇所に配置する場合、それぞれの位置に正確に図形を配置するという意味です。画面に3個配置し、その位置を目に見えるよう数値化するのが目的です。

rurucom
質問者

お礼

完璧です!!!!!こりゃすごい! 感動です! ありがとうございました。

その他の回答 (1)

  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.1

3個の例です。まず、3個の図形ともシートに正確に配置します。 myZukeiPotを標準モジュールに貼り付けボタンを貼り付けたシートから実行します。各図形の縦横位置がA1、B1、C1・・・に出力されます。(名前、縦位置、横位置) この中の動かしたい図形の情報を記録しておきます。 '位置を調べる Public Sub myZukeiPot() Dim shp As Shape '四角形 Dim cot As Integer 'カウンタ For Each shp In ActiveSheet.Shapes cot = cot + 1 Range("A" & cot) = shp.Name '名前 Range("B" & cot) = shp.Top '上端位置 Range("C" & cot) = shp.Left '左端位置 Next End Sub 移動を連続させるボタンとA、B、C位置に動くボタンを配置します。計4個。順にCommandButton1,2,3,4です。 下記のマクロを標準モジュールに貼り付け、「***縦・横位置の登録***」の箇所を上記で記録しておいた数値にします。順序は決めて下さい。 '四角形を動かす(例:四角形は3個) Public Sub ShapeMove(Optional ShiteiNo) Const ShpNum = 3 '四角形の個数 Dim ShpName As String '四角形の名前 Dim ShpTop(3), myShpTop As Double '動かす各位置、表示位置 Dim ShpLeft(3), myShpLeft As Double '動かす各位置、表示位置 ShpTop(1) = 71.25: ShpLeft(1) = 165.75 '***縦・横位置の登録*** ShpTop(2) = 98.25: ShpLeft(2) = 201 ShpTop(3) = 125.25: ShpLeft(3) = 276 Dim ct As Integer 'カウンタ Dim myShpIdx As Integer '四角形の順序 With ActiveSheet If IsMissing(ShiteiNo) Then 'ぐるぐる回る myShpTop = .Shapes("myText1").Top '今あった位置 myShpLeft = .Shapes("myText1").Left '今あった位置 myShpIdx = 0 For ct = 1 To ShpNum If myShpTop = ShpTop(ct) And myShpLeft = ShpLeft(ct) Then myShpIdx = ct '何番目か探す End If Next '次の場所にする myShpIdx = myShpIdx + 1 If myShpIdx > ShpNum Then myShpIdx = 1 End If Else '位置指定 myShpIdx = ShiteiNo End If .Shapes("myText1").Top = ShpTop(myShpIdx) .Shapes("myText1").Left = ShpLeft(myShpIdx) End With End Sub ボタンを配したシートモジュールに下記マクロを貼り付けます Private Sub CommandButton1_Click() 'ぐるぐる回る ShapeMove End Sub Private Sub CommandButton2_Click() 'Aの位置(Aに対応して「1」) ShapeMove 1 End Sub Private Sub CommandButton3_Click() 'Bの位置(Bに対応して「2」) ShapeMove 2 End Sub ' Private Sub CommandButton4_Click() 'Cの位置(Cに対応して「3」) ShapeMove 3 End Sub 長くなりました。

関連するQ&A

  • テキストボックスの移動(2)

    前回、質問しましたが、回答いただいたプログラムで、別のシートから複数のシートのテキストボックスの移動を移動させたいのですが・・・ たとえば、Sheet1・Sheet2・Sheet3にテキストボックス1が配置してあって、A位置とB位置に動くようにしてあります。 前回のプログラムでは、各シートに位置を指定するボタンが配置してありましたが、このボタンをSheet5に配置して、Sheet1・Sheet2・Sheet3の各テキストボックス1が一斉に動くようにしたいのですがよろしくお願いします。 前回のURL → http://oshiete1.goo.ne.jp/kotaeru.php3?q=85846

  • テキストボックスの大きさを、基準の大きさに戻す(エクセルVBA)

    図形のテキストボックスの大きさを取得して、その値を各テキストボックスの基準の大きさとして記録しておき、テキストボックスの大きさをマウスでドラッグして大きさを変えた後、ボタン1つでもとの大きさに戻したいのですが、どのようにすればよいでしょうか? 1)図形のテキストボックス、大きさの取得方法は? 2)基準の大きさと記録する方法は? 3)記録された大きさに戻すには?(シート上に配置されたボタンで実行) ※ 複数のシートに複数のテキストボックスがあります。 ※ シート毎にセットします。(シート毎にテキストボックスのサイズが違う為) ※ 現在、各テキストボックスには、基準位置がセットしてあり、ボタンで基準位置へ戻る仕組みが組まれています。(これをそのままにして・・・) ※ エクセル97と2000で使えるようにします。(作成は97) 宜しくお願い致します。

  • テキストボックスのフォントサイズの復元

    エクセルのシート上にある、図形のテキストボックスのフォントサイズに「12」をセットしておいて、シート上に配置してあるコントロールボタンをクリックする事で、変更されたサイズから「12」へもどす仕組みを作りたいのですが・・・ テキストボックスのフォントサイズ 「12」から、テキストボックスをアクティブにし、ツールバーでフォントサイズを変更する。 ↓ ** その後 シート上に配置されたボタンを押すと元の「12」に戻る ※ エクセル97、2000で使用(作成は97) こんなことできますか? できれば、どなたか教えて下さい。宜しくお願いします。

  • テキストボックスをグループ化するVBA

    エクセル上に並んだテキストボックスを、ボタンを押すことで、任意のテキストボックスをグループ化させたい。また、別のボタンでグループ化の解除が出来るようなVBAをおしえてください。 テキストボックスは、Sheet1~3まであって、ボタンもそれぞれに配置してあり、 どこのSheetのボタンを押しても、各シート、それぞれに任意の設定したテキストボックスがグループ化できるようにしたい ※各シート、グループ化するテキストボックスはおなじでなない・・・ よろしくお願いします。

  • Word2003のテキストボックス間の移動について

    よろしくお願いいたします。 現在WindowsXP/Word2003 で書類を作成しています。 その中で、テキストボックスを数箇所使用しているのですが、ボックス内の文章を編集しているとき(枠外が斜め線になり、中でカーソルが点滅している状態)、矢印キーでテキストボックス内の文字・行を移動しようとすると、何故か他のテキストボックスに移動してしまいます。これでは文章のちょっとした訂正を行おうとするたび、マウスで移動しなくてはならなくなり大変な時間のロスです。 この設定(?)を解除する方法はありますでしょうか?朝までに書類を作成しなくてはならないので大変困っています。 例) ・テキストボックスA(縦書き)・テキストボックスB(横書き)のふたつがある。 ・テキストボックスB内の文章を編集中、たとえば「あいうえお」の「お」の後ろ部分にカーソルがあり、1文字カーソルをずらそうと左矢印を押したらテキストボックスAにカーソルが移動してしまう。 ・テキストボックスA内ではカーソルによる文字・行間移動は可能。

  • エクセルVBAでの テキストボックス内の値検索について

    お世話になります。 早速質問致します。エクセルVBAでユーザーフォームへ配置された 各テキストボックスへ入力を忘れた箇所がある場合それを見つけ出し メッセージボックスで入力忘れを表示させ、さらに、その入力を忘れ てしまった空欄のテキストボックスにフォーカスを移動させたいので すが、どのように指令したら良いのでしょうか? ちなみにテキストボックスは15個設けています。それらを一度に 検索する方法がありましたら、アドバイスお願い致します。

  • VBAテキストボックスについて

    こんばんは。 エクセルVBAのテキストボックスの使用方法で行き詰っています。 配列内のデータをテキストボックスへ表示してあります。 テキストボックスを、ダブルクリックして内容を変更し、 変更したデータを配列へ格納する仕組みにしようとしています。 問題は、ダブルクリックすると、テキストボックス内のデータが消えてしまう事です。変更せず他のテキストボックスをクリックすると、データが消えたままになってしまいます。 データは表示したままで、必要な箇所のみ変更する。 ダブルクリック後何もせず、他のテキストボックスをクリックしても 、データは残る仕組みにしたいのですが、可能でしょうか? ご教授お願いいたします。 ※仕事の関係でお礼が遅くなりましたら申し訳ございません。

  • テキストボックス文字と同じ文字の行を先頭行へ移動

    Excelでテキストボックスに数値(例:1223-02)入力、検索ボタンを押すことにより同文字B16と一致することで先頭行を16行に表示移動したいのですがVBAの式をどなたかお解りの方よろしくお願いします。

  • チェックボックスの配置順にテキストボックスに表示

    accessのフォームにチェックボックスを配置し チェックされたものをテキストボックスに表示させています。 ■A ■B □C □D ■E となっていたら、テキストボックスに A B E と表示させています。 チェックボックスの真ん中に新しくチェックボックスを追加すると テキストボックス内には、追加したものが最後に表示されていまいます。 ■A ■B □C ■Z □D ■E とすると、テキストボックスには A B Z E と表示させたいのに A B E Z 表示されてしまいます。 いちから順番どおりに作り直せばいいのですが かなりたくさんチェックボックスがあるうえに 上司から、この先も何度も作り直しを指示されそうです・・・。 できれば簡単に、配置した順にテキストボックスに表示されるようにしたいです。 チェックボックスの配置順に テキストボックスに文字を表示させる方法を教えてください!

  • テキストボックス

    たびたびの質問すみません。 エクセルVBAでテキストボックス等(条件)に入力すると、他のテキストボックスにエクセルシートから照合して表示させる方法で、条件のテキストボックス等を2つ以上にすることは可能でしょうか、あればやり方を教えてください。

専門家に質問してみよう