• 締切済み

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

Mathmiの回答

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

とりあえず、システムを作る側からの疑問点を何点か。 >シート上、一定の枠内にあるテキストボックス セルやフォームでは駄目なんでしょうか? >決まったボタンで別枠内に集合させる テキストボックス等オートシェイプの操作は、関数ではなくVBAの領域です。 そのレベルの回答になってしまいますが、大丈夫ですか? (そちらでコードを読んで改良できるレベルなのか、それとも丸コピーのコードが欲しいのか) また、移動したテキストボックスを戻すのは、手動で行うのですか? それとも、マクロで自動的に移動するのでしょうか? >テキストボックス シート上でデータを扱う場合、基本的にセルを使います。 表示はテキストボックスで行うにしても、セルの内容を参照して行います。 もしかして、印刷用の原稿を自動で作成したい、という事なのでしょうか? >Aさん、Bさん、Cさんとテキストボックスがあり >AさんBさんが出勤でCさんが休暇 これは、テキストボックスに表示されているのは人名のみ。 出勤/休暇のデータは別の場所に存在している、という認識でいいのでしょうか? >休暇枠 罫線か、図形の四角形で枠を作っているのでしょうか? 移動した後、枠のサイズは変更するのですか? 枠の大きさはどの程度で、そこに入る可能性のある人名テキストボックスはどの程度でしょうか? 総じて、どのようなデータ構造になっているのか、結果どうしたいのかが、ご質問からは分かりづらいです。 エクセル上で変更前、変更後を仮作成したものを上げて貰えれば、より分かりやすいのですが。

pepennpen
質問者

お礼

ご親切なご回答ありがとうございます。

pepennpen
質問者

補足

>セルやフォームでは駄目なんでしょうか? 現在の稼働管理表がExcel上にあるテキストボックスに 名前が入力されているものを手動で休暇枠内から 出勤枠へドラッグ&ドロップで動かしています。 その操作先が出勤と欠勤だけでなく、 各業務項目があって専用の担当枠に入ったり休暇に移ったり 時には違った業務担当に移動したりします。 それが1週間分縦に並んでいて 一日過ぎる毎に翌週のその曜日を訂正するという とても無駄な使い方をしているようです。 >決まったボタンで別枠内に集合させる 勿論VBAとして質問しておりますが、私は今 VBAを得意とする方々の指導の元勉強中で 正直右も左もわかりません。ただ指導者は 別部署にしかおらず、自身が所属する部署でVBAを 仮にでもいじることができるのは私のみで 色々な無理な要求を短期間で解決するよう 依頼が上がってきます。 しかし、コードを読み解けるかと聞かれると 読み解けない、と答える方が正しいと思います。 >テキストボックス パソコンと繋いで電子黒板に表示するものです。 >Aさん、Bさん、Cさんとテキストボックスがあり... 別書類の選評を見ながら、担当者が手動で移動させています。 >休暇枠 枠のサイズは一定です。一週間一定です。 ただそれが丸一周間分縦に並んでいて 上記のように一日過ぎる度に手動で動かしています。 現在、支持のもとの突破口ですが Sub 座標軸() Do, Sh As Shape For Each Sh In ActiveSheet.Shapes MsgBox Sh.Name & ":" & (Sh.Left) & "," (Sh.Top) Next Sh End Sub で各テキストボックスの座標を取得し 各テキストボックスを5日分コピーしテキストボックスに 名前を付けて、 Sub 定位置() Dim s As Integer Dim e As Integer s=2 e=5 Call おーる定位置1(s,e) End Sub Sub おーる定位置1(s As Integer.e As Integer) Dim i As Integer.i = 1 DIm zurashi As Integer.zurasi = 77 For i = s To e ActiveSheet.Shapes.Range(Array("Aさん" & i().Select Selection.ShapeRange.Left = 936 Selection.ShapeRange.Top = 26.25 + ((i - 1) * zurashi) これで全てを5日間定位置につかせるボタンを作ったので そこから、休暇に移したいテキストボックスを選択(アクティブな状態)にし、leftの座標だけ投入したマクロボタンを 出勤のところと休暇のところに配置し 定位置からの移動のみとする、という解決策です。 但しこれは、横並びのテキストボックスが選択された場合 全て同じ座標に重なってしまうという欠点があります。 月曜用のボタン、火曜用のボタンを sとeに入る数値を変えることで作り分ける予定です。 タイムリミットが17日なので、 色々難点はありますが 何とか解決させようとしています。

関連する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