[[20090928162714]] 『同一ブック内でのユーザーフォームのコピー』(SJC) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

 『同一ブック内でのユーザーフォームのコピー』(SJC)

 お知恵をお借りできれば幸いです。

 エクセルブック上にユーザーフォーム1を作成してあります。
 ユーザーフォーム1をコピーして
 同じブック上に全く同じ形式・内容のユーザーフォーム2・3を作成し、
 リンクするセルやフォーム上のテキストボックス等のNoのみを変えたいのです。

 例えばユーザーフォーム1上では
  TextBox1の出荷先CDから「出荷関連情報」シートをVlookupで検索して
  「納期(TextBox6)」−「リードタイム」の日付を出荷日欄(TextBox7)に入力し
  TextBox7の内容を「依頼書」シートのセルA1に転記する

 となっているものをコピーして

 ユーザーフォーム2上では
  TextBox11の出荷先CDから「出荷関連情報」シートをVlookupで検索して
  「納期(TextBox16)」−「リードタイム」の日付を出荷日欄(TextBox17)に入力し
  TextBox17の内容を「依頼書」シートのセルB1に転記する

 というようにしたいのです。

 いい方法ありますでしょうか?
 そもそも そういったことは可能なのでしょうか?

 どうぞ宜しくお願い致します。

 操作対象とするセルはともかく、オブジェクトの名前(番号)まで変えるのは
意図が良く分かりません。
私ならオブジェクト名はそのまま使います。不都合はないと思うので。
もしくは、フォームを増やす代わりに、タブストリップで、選んだタブによって操作対象を
変更するような仕組みにするかもしれません。
(みやほりん)

 シート1のD9:AV16に客先名や品名等々を記入するようなフォーマットがあります(記入欄1)
 同じシート1のD17:AV24とD25:AV32にも同じフォーマットで客先名や品名等々を記入するようになっています(記入欄2・3)。

 シート2にコンボボタン1・2・3があり
 コンボボタン1を押すと記入欄1に入力するユーザーフォーム1が
 コンボボタン2を押すと記入欄2に入力するユーザーフォーム2が開くようにしたいと思っています。
 (最終的にはシート1の記入欄1・2・3に入力されている状態にしてシート1を印刷します)

 各記入欄へ記入する項目は同じ操作になるので
 ユーザーフォームをコピーしたいと思ったのですが・・・。
 (イメージ うまく伝わるでしょうか・・・?) 

 >私ならオブジェクト名はそのまま使います。不都合はないと思うので。
  済みません 不勉強でよく分からないのですが
 ユーザーフォーム1とユーザーフォーム2の両方にテキストボックス1があったとしてもOKということでしょうか?

 申し訳ありません もう少しご教授頂けますか。
 宜しくお願い致します。
 (SJC)

 > ユーザーフォーム1とユーザーフォーム2の両方にテキストボックス1があったとしてもOKということでしょうか?
 
「Book1とBook2の両方にSheet1があったとしてもOKということでしょうか?」
と同じような質問をしていると思いますよ。
オブジェクトは親オブジェクトが違えば名前が同じでも別物です。
Userform1.Textbox1
Userform2.Textbox1 で区別が出来ます。
逆に言えば、親オブジェクトさえ明確にしておけば、別のユーザーフォームの
オブジェクトも操作できます。
 
>コンボボタン
コマンドボタン?
 
処理そのものが同じで対象とする範囲と押すボタンが違うだけですから
ボタンによって対象範囲を切り替えることで可能だと考えます。
Public変数に何らかの情報を格納して区別するか、
セルに何かの印を入力して区別するか。
実は、そのような処理を嫌う人も多いので、ボタンはひとつにして、処理をコンボ
ボックスやオプションボタンの選択状況で切り替えるようなインターフェースが
世の中には多いのだと思われます。
 
>そういったことは可能なのでしょうか?
冒頭の問いかけですが、可能ですよ。フォームをコピーしてそれぞれ
コードを書き換えれば出来ることですから。
ただ、処理したい範囲が少しずれるだけなので、果たして専用のフォームが必要か
どうかですね。将来、少しレイアウトが変わっただけで、フォームに処理コードを
全部書いておくと、コードの変更はコピーした方も書き換えなきゃならない。
私なら、コンボボックスで記入欄1、2、3からひとつを選び、ボタンを押す。
コンボボックスで
記入欄1が選ばれていたらD9:AV16
記入欄2が選ばれていたらD9:AV16の8行下の範囲
記入欄3が選ばれていたらD9:AV16の16行下の範囲
 
と言う処理をひとつのユーザーフォームでやります。
今現在、記入欄1への処理が出来ているのなら、Offsetプロパティを
うまく転記セルに当てはめていけば、それほど難しい変更ではないはずです。
 
(みやほりん)


 (みやほりん)様

 詳しいご説明 有り難う御座います。
 >「Book1とBook2の両方にSheet1があったとしてもOKということでしょうか?」
 と同じような質問をしていると思いますよ。
  そうですね。言われてみれば仰るとおりです。
  参照や連携等々繋げて(?)考えすぎて混乱していました。
  お恥ずかしい限りです。

 >コンボボタン  コマンドボタン?
 ご指摘の通りコマンドボタンです。
 失礼致しました。

 アドバイス頂いたように
 >コンボボックスで記入欄1が選ばれていたら〜 というようにやってみたいと思います。

 本当に丁寧に有り難う御座いました。
 (SJC)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.