- 締切済み
アクティブコントロールの移動
Mathmiの回答
- Mathmi
- ベストアンサー率46% (54/115)
(前の回答より) Sub ボタン() Dim i As Integer, j As Integer Dim NewGyoumu As Integer '変更先の業務番号 Dim myShp Dim Bangou() As Integer '曜日番号、業務番号を受け取る配列。 '何も選択されていなければ終了する。 If VarType(Selection) <> vbObject Then Exit Sub End If 'ボタンの名前から業務番号を設定する。 Select Case ActiveSheet.Buttons(Application.Caller).text Case "業務1" NewGyoumu = 1 Case "業務2" NewGyoumu = 2 Case "業務3" NewGyoumu = 3 Case "業務4" NewGyoumu = 4 End Select '枠や名札位置、名前一覧を読み込み Call 設定 Call 名札取得 'データ上の業務番号を変更 For Each myShp In Selection.ShapeRange For i = 1 To UBound(Nafuda) If myShp Is Nafuda(i).shp Then Nafuda(i).Gyoumu = NewGyoumu End If Next i Next myShp '名札の位置を変更 For i = 1 To nYoubi For j = 1 To nGyoumu Call 枠再描画(i, j) Next j Next i End Sub Sub 名札取得() '画面内のオートシェイプの内、枠に含まれているものを検索。 '先に枠の設定を読み込む必要がある。 Dim n As Integer Dim Bangou() As Integer Dim myShp As Shape For Each myShp In wsHyouji.Shapes Bangou = 名札検索(myShp) If Bangou(1) <> -1 Then '枠に含まれていれば n = n + 1 ReDim Preserve Nafuda(1 To n) Set Nafuda(n).shp = myShp Nafuda(n).Youbi = Bangou(1) Nafuda(n).Gyoumu = Bangou(2) Nafuda(n).Key = myShp.TextFrame.Characters.text ' myShp.Width = 50 ' myShp.Height = 20.25 End If Next myShp End Sub Function 名札検索(ByRef myShp As Shape) As Integer() 'そのオートシェイプが、どの枠の中に含まれているかを返す。 '先に枠の設定を読み込む必要がある。 Dim i As Integer, j As Integer Dim aryRtn(1 To 2) As Integer '戻り値用配列 'テキストボックスでないなら、異常を返して終了 If myShp.Type <> msoTextBox Then GoTo CONTINUE End If '枠なら、異常を返して終了 For i = 1 To nYoubi For j = 1 To nGyoumu If myShp Is Waku(i, j).shp Then GoTo CONTINUE End If Next j Next i 'どの枠に含まれているか For i = 1 To nYoubi For j = 1 To nGyoumu If Waku(i, j).Top <= myShp.Top And myShp.Top <= Waku(i, j).Bottom And _ Waku(i, j).Left <= myShp.Left And myShp.Left <= Waku(i, j).Right Then aryRtn(1) = i aryRtn(2) = j 名札検索 = aryRtn Exit Function End If Next j Next i CONTINUE: aryRtn(1) = -1 名札検索 = aryRtn End Function Sub 枠再描画(ByRef bi As Integer, ByRef Gyou As Integer) 'bi曜日の業務Gyouの枠に含まれる名札を並び替える。 Dim i As Integer, j As Integer, n As Integer, cnt As Integer Dim TargetNafuda() As NamePlate '作業対象である名札 '名札一覧からその枠内の名札のみを抽出 For i = 1 To UBound(Nafuda) If Nafuda(i).Youbi = bi And Nafuda(i).Gyoumu = Gyou Then n = n + 1 ReDim Preserve TargetNafuda(1 To n) TargetNafuda(n) = Nafuda(i) End If Next i 'その枠に名札が含まれていなければ終了 If n = 0 Then Exit Sub End If '抽出した名札を、名前の順番で並び替え cnt = 0 For i = 0 To UBound(Namae) For j = 1 To UBound(TargetNafuda) If Namae(i) = TargetNafuda(j).Key Then cnt = cnt + 1 TargetNafuda(j).shp.Left = Waku(bi, Gyou).Left + NafudaWaku(cnt).X TargetNafuda(j).shp.Top = Waku(bi, Gyou).Top + NafudaWaku(cnt).Y End If Next j Next i 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ともに他のページで共通で使用するので部品化しています。 ご教授のほどよろしくお願いします。
- ベストアンサー
- Microsoft ASP
- VBAにてコントロールを引数にしたい
VBAの処理にて、 コントロールを引数にしたいのですができますか? 以下のようなことがしたいです。 A,Bフォーム C,Dテキストボックスがあり、 フォーム名とテキストボックス名を渡し 初期値を設定したい・・・。
- ベストアンサー
- Visual Basic
- エクセルVBAでテキストボックスの値の取得と変更について
エクセルのVBAを使ってシート上のテキストボックスのテキストを取得・変更するマクロを作成したいと思っていますがうまく行きませんので、お知恵を拝借したいとおもいます。 環境:WindowsXPでオフィス2002 状況: エクセルブックa.xlsのシートに「コントロールツールボックス」のテキストボックスを配置(オブジェクト名はTEXTBOX_C) エクセルブックb.xlsにコードを書き、a.xlsのTEXTBOX_CのプロパティのValueかTextを取りだしたい 試した事: コントロールを配置したシートに次のマクロ TEXTBOX_C.Text = "これはコントロールのテキストボックス" を書くとテキストボックスに文字を入れ込めますが、別のエクセルブックからだと上手く行きません。 また、オートシェイプのテキストボックスの場合は簡単に出きるのですが、コントロールツールボックスではどうしても上手く行きませんので、対象法などご存知の方いらっしゃいましたら教えてください
- ベストアンサー
- Visual Basic
- 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の「ページ設定」の、余白や拡大率で使用されているコントロールです) あのコントロールを使用したいのですが、名前が分からないので調べようがなく、困っています。 どうしたら使用できるでしょうか? どうか、よろしくお願いします。
- ベストアンサー
- Visual Basic
- (EXCEL)カレンダーコントロールについて
(EXCEL2002) カレンダーコントロール、または万年カレンダーをシート上に作成してあり、カレンダーの日付をクリックするとVBAのUserForm1が表示されて UserForm1にはTextBox1(商品名を入力します)とTextBox2(数量を入力します)とCommandButton1(登録と記入してあります)があり、各テキストボックスに入力して登録を押すと、別シートに(日付(A列)は記入してあります)B列、C列にクリックした日付の行に記入されるようにできないでしょうか? A B C ------------ 1 | 日付 商品名 数量 2 | 1 3 | 2
- ベストアンサー
- オフィス系ソフト