• 締切済み

アクティブコントロールの移動

Mathmiの回答

  • Mathmi
  • ベストアンサー率46% (54/115)
回答No.3

No.2です。 質問だけでは何ですので、あるオートシェイプと重なっているオートシェイプを別のオートシェイプの場所に移動するコードを組んでみました。 出勤/欠勤の取得方法とか、移動先の位置とか、テキストボックスの判別方法とか、調整する箇所は多々存在するコードです。 ある程度VBAを分かっている人向けに、自分でコードを組むときに参考となる事を目的としたものです。 Sub test()  Dim BaseShp As Shape '移動元枠オートシェイプ  Dim BaseRange As Range '移動元枠セル範囲  Dim MoveShp As Shape '移動先枠オートシェイプ  Dim MoveRange As Range '移動先枠セル範囲  Dim myShp As Shape  Dim myRange As Range  Dim BaseCollection As Collection '移動元に重なっているオートシェイプ  Dim WorkCollection As Collection '出勤/休暇の組  Dim MoveCollection As Collection '移動先に移動するオートシェイプ  Dim MoveCell As Range '移動先のセル  '移動先、移動元を取得  Set BaseShp = ActiveSheet.Shapes("Rectangle 2")  Set BaseRange = Range(BaseShp.TopLeftCell, BaseShp.BottomRightCell)  Set MoveShp = ActiveSheet.Shapes("Rectangle 7")  Set MoveRange = Range(MoveShp.TopLeftCell, MoveShp.BottomRightCell)  '移動元と重なっているオートシェイプをコレクション。  Set BaseCollection = New Collection  For Each myShp In ActiveSheet.Shapes   Set myRange = Range(myShp.TopLeftCell, myShp.BottomRightCell)   If Not Intersect(BaseRange, myRange) Is Nothing And Not myShp Is BaseShp Then    BaseCollection.Add myShp, myShp.TextFrame.Characters.Text   End If  Next myShp  '出勤/休暇を設定  Set WorkCollection = New Collection  WorkCollection.Add "出勤", "Aさん"  WorkCollection.Add "休暇", "Bさん"  WorkCollection.Add "休暇", "Cさん"  '休暇のオートシェイプをコレクション  Set MoveCollection = New Collection  For Each myShp In BaseCollection   If WorkCollection.Item(myShp.TextFrame.Characters.Text) = "休暇" Then    MoveCollection.Add myShp   End If  Next myShp    '休暇のオートシェイプを移動  Set MoveCell = MoveShp.TopLeftCell  For Each myShp In MoveCollection   myShp.Top = MoveCell.Top   myShp.Left = MoveCell.Left   Set MoveCell = MoveCell.Offset(myShp.BottomRightCell.Row - myShp.TopLeftCell.Row + 1)  Next myShp End Sub

関連するQ&A

  • ユーザコントロール間でWebコントロールの参照

    ASP.NETでWebアプリケーションを作成しています。 環境:.net framework 1.1, C#, ASP.net 1.1 問題点はあるページにAというユーザコントローラとBというユーザコントローラがあります。 Aにはテキストボックスがあり、Bにはボタンがあります。 Bのボタンを押下するとクリックイベントでAのテキストボックスから 入力内容を取得してURLにパラメータとしてくっつけて、リダイレクトする という処理です。 ここでBのユーザコントローラからAのテキストボックスを参照する にはどうしたらよいでしょうか? A,Bともに他のページで共通で使用するので部品化しています。 ご教授のほどよろしくお願いします。

  • VBAにてコントロールを引数にしたい

    VBAの処理にて、 コントロールを引数にしたいのですができますか? 以下のようなことがしたいです。 A,Bフォーム C,Dテキストボックスがあり、 フォーム名とテキストボックス名を渡し 初期値を設定したい・・・。

  • エクセルVBAでテキストボックスの値の取得と変更について

    エクセルのVBAを使ってシート上のテキストボックスのテキストを取得・変更するマクロを作成したいと思っていますがうまく行きませんので、お知恵を拝借したいとおもいます。 環境:WindowsXPでオフィス2002 状況: エクセルブックa.xlsのシートに「コントロールツールボックス」のテキストボックスを配置(オブジェクト名はTEXTBOX_C) エクセルブックb.xlsにコードを書き、a.xlsのTEXTBOX_CのプロパティのValueかTextを取りだしたい 試した事: コントロールを配置したシートに次のマクロ TEXTBOX_C.Text = "これはコントロールのテキストボックス" を書くとテキストボックスに文字を入れ込めますが、別のエクセルブックからだと上手く行きません。 また、オートシェイプのテキストボックスの場合は簡単に出きるのですが、コントロールツールボックスではどうしても上手く行きませんので、対象法などご存知の方いらっしゃいましたら教えてください

  • 1つ前のフォーカスのあったコントロールの取得

    C#で1つ前のフォーカスのあったコントロールの取得方法がわかりません。 ボタンを押下して、1つ前にフォーカスのあったテキストボックスに文字列を表示させたいです。 わかる方いらっしゃいましたらよろしくお願いします。

  • access2000でカレンダーコントロールをいろいろな場面で

    access2000で1つのカレンダーコントロールをいろいろな(複数の)場面で利用したいと思います。 カレンダーコントロールを置いたフォームは作成しました。→「カレンダーフォーム」 カレンダーフォームで取得した値をテキストボックスに戻すプロシージャも作成し、うまくいっています。 しかし、特定のテキストボックスに対してしか機能しません。 1つのカレンダーフォームで、複数のテキストボックスに入力させるプロシージャを教えてください。 カレンダーフォームの起動は、sample1_frm上のコマンドボタン1、コマンドボタン2やsample2_frm上のコマンドボタン1、コマンドボタン2を押すと起動するようにしたいと思います。 sample1_frm上のテキストボックス1(横にコマンドボタン1)やテキストボックス2(横にコマンドボタン2)があるので、それに対応したテキストボックスにカレンダーコントロールで取得した値を代入する方式です。 どのように1つのカレンダーフォームで各フォーム、テキストボックスに対応したコードを書けばよいでしょうか?

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

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

  • C# コントロール取得

    C# コントロール取得 選択しているコントロールを取得する方法とかありますでしょうか? VC#2008でアプリケーションを作っています。 例えばテキストボックスのLeave関数などで MessageBox.Show(this.textbox1.Text) みたいにしたいのですが テキストボックスが20個ぐらい必要だとLeave関数を20個作らなくてはいけないので 上記の方法がわかれば1つで済むので是非知りたいです。 自分でも調べてActiveControlを使用してみたのですが反応しません。 MessageBox.Show(this.ActiveControl.Text); としましたが・・ 教えてください

  • Access2000:コントロールの入力制限

    特定のコントロールの入力内容によって、他のコントロールの入力を制限したいのですが方法がわかりません。 設定したいのは以下の内容です。 ・コントロールA(Yes/No型)のチェックボックスをONにした場合のみ、コントロールB(テキスト型)にテキストを入力できるようにする ・コントロールC(コンボボックス)である項目を選択した場合のみ、コントロールD(テキスト型)にテキストを入力できるようにする 入力できない場合は、テキストボックスの色を変えるなどして、入力不要なことがわかる状態にしたいです。 ちなみに上記のコントロールはすべて同じクエリ(テーブル)上にあるものです。 どのように設定すればよいか教えてください。よろしくお願いします。

  • コントロールの名前がわかりません。

    テキストボックスの横に上下ボタンが付いていて、そのボタンをクリックするとテキストボックスの値が増えたり減ったりするコントロールってありますよね? (EXCELの「ページ設定」の、余白や拡大率で使用されているコントロールです) あのコントロールを使用したいのですが、名前が分からないので調べようがなく、困っています。 どうしたら使用できるでしょうか? どうか、よろしくお願いします。

  • (EXCEL)カレンダーコントロールについて

    (EXCEL2002) カレンダーコントロール、または万年カレンダーをシート上に作成してあり、カレンダーの日付をクリックするとVBAのUserForm1が表示されて UserForm1にはTextBox1(商品名を入力します)とTextBox2(数量を入力します)とCommandButton1(登録と記入してあります)があり、各テキストボックスに入力して登録を押すと、別シートに(日付(A列)は記入してあります)B列、C列にクリックした日付の行に記入されるようにできないでしょうか?    A   B    C  ------------ 1 | 日付 商品名 数量 2 | 1 3 | 2