• 締切済み

ワークシートとコンボボックスを共存させたい

エクセルのVBAで、ワークシートの左側にコンボボックスを設置することはできますか? コンボボックスにA、B、Cとあるとすると、Aをクリックしたら右側にAのsheetが開くようにしたいのですが。 もしくは、VB2005で、フレームの左右、または同じフォームの中で左側にコンボボックス、右側にワークシートを設置する方法はありますか? どちらか可能な方法でプログラムを組み、ワークシート上にはユーザーが数値を打ち込んで自動計算できるようにしたいのですが。 よろしくお願いします。

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.2

#1です。補足的記述ありがとうございました。 しかし、まだしたいことが良く伝わらない。 ーー 独断で下記のようなのはどうだろう。 質問にはハズレであっても、覚えておけば何かのときにべんりだよ。 Sheet1に A列A2:A5             C列C2:C5 ナショナル洗濯機 ナショナルクーラー 三菱洗濯機 三菱クーラー シャープ洗濯機 シャープクーラー 東芝洗濯機 東芝洗濯機クラー 実体はA2には、関数式 =HYPERLINK("#Sheet2!A1","ナショナル洗濯機") がはいっている(入れる)。 A3は =HYPERLINK("#Sheet2!A5","三菱洗濯機") が入っている。HYPERLINK関数です。 ーー C列(B列飛ばしたのは、特に意味なし。余白のため。) c2も同じく =HYPERLINK("#Sheet3!A1","ナショナルクーラー") Sheet名がSheet3に変えた事に注意。 Sheet2には ナショナル洗濯機 A1 ここにナショナル洗濯機に関する、利用する情報を書き込んでおく。 三菱洗濯機  A5 ここに三菱洗濯機に関する、利用する情報を書き込んでおく。 シャープ洗濯機 A10 同 東芝洗濯機 A15 同 ーー Sheet3 には ナショナルクラー(A1セルに) ここにナショナルクーラーに関する、利用する情報を書き込んでおく。 三菱クラー(A5セルに) 同 シャープクーラー(A10セル) 同 東芝クーラー(A15セル) 同 ーーー 使い方 Sheet1で目的の会社・製品を選びクリックすると、当該製品の情報のあるシートの行(セル)にとび、瞬間的に情報が見られる。 ーー コンボの利用 100行(アイテム)もあるとスクロールなどの点で、非実用的に なりかかる。 良く考えると、コンボもワークシートとなんら変わりない。 VBAを勉強すれば、セルをダブルクリックしたら、ダブルクリックしたセルの情報は取れる仕組みがある。 ーー 私の心配は >自動計算できるようにしたいのですが の内容を、質問者が、文章や例示で、説明できていないことです。 ーー そして 私の書いたアドヴァイスの真意を、間違って総括してしまい、 >テキストボックスとラベルを並べて、セルに入っている計算式はひとつずつコードで書いていく、つまり「擬似ワークシート」を作成するしかないですか・・・ といってしまっている。 >セルに入っている計算式はひとつずつコードで書いていく とは何でしょう。 式を文字列で入力して、その中身通りに処理させるのは難しい。 >擬似ワークシート とは何でしょう。 「擬似」は質問者のイメージで、ワークシートそのものではないのですか。 ーー 1例でも良いから、擬似実例をあげてごらんよ。 質問者が、VBAの経験があるかどうかと言うことを添えて。

cs-megami
質問者

補足

どうも、説明が下手で何度も書いていただいてすみません。 現在使っているエクセルのブックというのが、sheet1にナショナルの製品数十種類、sheet2に東芝の製品数十種類・・・という具合に分かれているわけですが(もちろんあくまでたとえです)、sheetの中身は以下のようになっています。   A      B      C   D   E   F 1 製品名 仕入れ値 売値 個数 計算式 結果 2 製品名 (以下同じ) 3 実際にはもっとずっと複雑で、計算式もひとつの製品について10セルくらい入れてありますが、基本的には、オペレーターがB、C、Dのセルに数値を入れれば、自動計算で結果が出るというものです。 ここからご質問にお答えします。 まず、 >自動計算できるようにしたいのですが の内容を、質問者が、文章や例示で、説明できていないことです。 上記の例でお分かりいただけましたでしょうか? 「コンボボックスと共存できて、自動計算できるようなシステムはありますか?」という意味でした。 >セルに入っている計算式はひとつずつコードで書いていく とは何でしょう。 式を文字列で入力して、その中身通りに処理させるのは難しい。 これは、「コンボボックスとワークシートが共存できない」という前提で、「ならば、オペレーターの要求どおりコンボボックスがどうしても必要ならば、ワークシートはあきらめて普通のフォームにコンボボックスとテキストボックスを並べるしかない? その場合、sheetのセルに入っている計算式はマクロのコードとして書き直すしかない」という意味でした。 >擬似ワークシート とは何でしょう。 「擬似」は質問者のイメージで、ワークシートそのものではないのですか。 上記のようにテキストボックスで組み上げた「ワークシートのようなもの」という意味で、「擬似ワークシート」という言葉を使いました。 オペレーターの要求が「シート上で打ち込み作業をやっているときに、任意の製品に飛びたい、そのためにいつも画面上にコンボボックス(でなくてもなにか名前をクリックしたらその製品の箇所に飛ぶようなシステム)を常駐させることはできないか」というものなので、お教えいただいたようなハイパーリンクをすべてのシートに貼り付けるのが一番いいかもしれません。 ちなみに私の考えた「擬似ワークシート」、テキストボックスを並べてセルの代わりをさせ、自動計算の部分はコードに書き込む、というのも理屈では可能ですよね?(手間が大変ですが)

  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.1

VBAのどれだけの技量の方か知らないが、型破りのリクエストだと思います。 コンボなどはワークシートとか(フォームに)貼り付けないといけない。コンテナ(俗に言えば台紙)が必要で、何でも、画面のどんな部分でも、その台紙になれるわけじゃない。 ですからシート1にコンボを1つ、張り付け、アイテムA,B,Cがシート名なら(A、B、Cは何か、質問にこの点はっきり書くこと)、クリックして選択すれば、選択したシートは選択できる。 しかし選択したシートが貼り付けたシート以外ならコンボは見えない。 これを克服してコンボとワークシートを並べて見せるという技は まず解説本にも、WEBにも解説されてないと思う。相当高等な分野になると思う。 ーー >VB2005で、フレームの左右、または・・右側にワークシートを設置する方法はありますか? 私程度の知識のものの断定だが、ワークシートをVBで扱うといっても エクセルのオブジェクト(ライブラリ)の利用にしか過ぎないから(またそれがベストだから)ワークシートに限れば、エクセルVBAでできることを越えることは、VBでは難しいと思う。 ーー その先はAPI、レジストリなどの世界だが、プロの世界にいて、指導もしてもらえる世界にいなければ、ウインドウズの総体的な仕組みの理解、知識習得に非常に時間がかかり、そこまでするのは無駄な気がする。プロでなければ、すべき他に大事なことがあるはず。 ーー >ワークシート上にはユーザーが数値を打ち込んで自動計算できるようにしたいのですが これは平凡な要求だが? ーー コンボなどのことを持ち出しているが、結局、(プログラム・コードは別にして)ニーズとして、何に困っているの。 なにを省力化したいの?。 シートの選択など、シートタブをクリックしたら終わりなんだが。

cs-megami
質問者

お礼

説明が下手ですみません。 A、B、Cというのはデータの名前でもあり、ワークシートのタイトルでもあります。 そしてデータ数は100ほどもあります 現場からのリクエストで、何らかの方法で、100個のデータ名の中から「A」をクリックしたら「A」のワークシート、もしくはワークシートの中の「A」のデータ箇所に飛べないか、と言われたので、コンボボックスを思いついたんですが。 ご指摘のとおり、「コンボとワークシートを並べて見せる」、つまりワークシートを普通のオブジェクトのように扱う、というのがやりたかったんですが、どうも無理そうですね。 テキストボックスとラベルを並べて、セルに入っている計算式はひとつずつコードで書いていく、つまり「擬似ワークシート」を作成するしかないですか・・・ がんばってみます。

関連するQ&A

専門家に質問してみよう