質問: エクセルvbaの質問です。 こんばんわ! エクセルvbaのユーザーフォーム上のテキストボックス等をマクロを実行した状態で、動かしたりしたいのですが、可能でしょうか? 具体的には、コマンドボタン1をクリックすると、テキストボックス等を移動したりできるようにしたいです。 参考url、あるいは方法があればご教授お願いいたします。
回答: ふつーに private sub commandbutton1_click() me.textbox1.top = me.textbox1.top - 10 end sub private sub commandbutton2_click() me.textbox1.top = me.textbox1.top + 10 end sub private sub commandbutton3_click() me.textbox1.left = me.textbox1.left - 10 end sub private sub commandbutton4_click() me.textbox1.left = me.textbox1.left + 10 end sub といった具合でできます。 補足: 1.座標(top,left)はユーザーフォームの範囲外を与えることができます。つまり何も手当てをしなければ,コマンドボタンクリッククリッククリックでユーザーフォームの「外」に移動させてしまうこともできます。そうしたくないときは,移動前にtopやleftが所定の範囲から外れそうなら移動をさせないように制御構造を仕込んでください。 2.こういった方法でプロパティを変更することを「実行時」の操作と言います。実行時の操作結果はユーザーフォームがロードされている間だけ保存されます。つまり何も手当てをしなければ,操作後にユーザーフォームをunloadし,次回再度loadしたときにはテキストボックスは「デザイン時」の位置に初期化されて現れます。そうしたくないときは,たとえば「移動後の位置」をワークシートなどに記録しておき,たとえばinitializeイベントなどで動的に再配置するように仕込んでください。