• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルについて質問です。)

Excelのユーザーフォームで別シートのセルにControlSourceを設定する方法とは?

このQ&Aのポイント
  • ExcelのユーザーフォームでテキストボックスやコンボボックスのControlSourceを、フォームを開いたのとは別のシートのセルに設定する方法を教えてください。
  • ユーザーフォームを開くのは常に「Sheet1」で、入力した内容は「Sheet2」に表示したいです。また、コンボボックスのリストは「Sheet3」の値を使用したいですが、現在は全て「Sheet1」にリンクしています。
  • さらに、Excelのセルの数式に別のセルの値を代入することは可能でしょうか?例えば、「Sheet2」のセルA4の値を参照する数式が存在し、「Sheet3」のセルA4の値を参照する数式に変更したいです。同様に、セルの範囲やファイル名も数式の変数として使用できるのでしょうか?ご教示いただけますか?

質問者が選んだベストアンサー

  • ベストアンサー
  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.3

●平成13年9月 加工実績表.xlsが開いていれば、A1に半角数値9があるとして、 =INDIRECT("'C:\My Documents\工場用\月間加工実績表\[平成13年"& JIS(A1) &"月 加工実績表.xls]入力用'!$B$129") で可能です。 ●参照するBookが開いていなければ上の式は値を返しません。 マクロ(ユーザー定義関数)もダメでしょう。(マクロで開けば別ですが) 悪あがきとしては、今、セルの算式が『[平成13年8月 加工実績表.xls]』となっていれば、[平成13年8月 加工実績表.xls]をコピーして置き換えのテキストボックスに貼り付けて、   [平成13年8月 加工実績表.xls]      ↓   [平成13年9月 加工実績表.xls] の置き換えを行えば値は変わります。 >欲張って『アクセス』にも手を出そうとしておりますが・・・。 是非やるべきです。この質問のような悩みはうそのようになくなるかもしれません。 前段はご勘弁を。SEさんには働いてもらっています。専門のHPには信じられないような方(ホントの専門家?尊敬できそう)がたくさんいらっしゃいますヨ。では。

pc-cad
質問者

お礼

ありがとうございました。 なるほど~。すごいですね。 また別の質問を欠きこみますので、お時間が有ったらよろしくお願いします。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.2

後半部分についての別方法を思いつきました。 >それと、セルの数式の中に別のセルの数値を代入できますか? A1にシート番号を入力するとして、=INDIRECT("Sheet"&A1&"!A4") で指定したシートのA4の値を表示します。 >同じように、セルの範囲につけた名前 単一セルにDATA1、DATA2、DATA3・・・と名前が付いていれば、 A1に範囲名の番号を入力するとして、=INDIRECT("DATA"&A1) で指定した範囲名のセル値を表示します。 複数セル範囲(A1からZ100とか)にTBL1、TBL2、TBL3・・・と範囲名がついていれば、  =INDEX(INDIRECT("TBL"&A1),1,1) のように使えば、Index関数の参照する範囲を切り替えられます。 >リンクするファイルの名前 内容がよく分からないため何ともいえませんが、ファイルの名前なら文字列の連結で定義できます・・・ ="myFileName"&A1&".txt" のような感じです。リンク先は困難かもしれません。 ご参考に。

pc-cad
質問者

お礼

御礼が遅くなってゴメンナサイ。 ユーザーフォームの件と、セルの数式にセルの値を代入する件、できました。 ありがとうございます!!! ずうずうしいようですが、もうひとつ。 リンクするファイル名の件ですが、内容を説明しますと、 あるセルの数式が次のような内容だったとします。 ='C:\My Documents\工場用\月間加工実績表\[平成13年9月 加工実績表.xls]入力用'!$B$129 この場合の『9月』の『9』部分に、指定したセルの数字を代入したいのです。 『加工実績表』は『月ごと』にブックを作っているので、どうしてもこのような形になってしまいます。 よろしくお願いします。 余談ですが、nishi6さんはナゼそんなにエクセルに詳しいのですか? SEのようなお仕事をされてるのですか? ワタクシはエクセルを始めて、約10ヶ月で、最近進歩が止まってしまったような気がします。欲張って『アクセス』にも手を出そうとしておりますが・・・。

全文を見る
すると、全ての回答が全文表示されます。
  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.1

テキストボックスのControlSourceがSheet2のA1なら  Sheet2!A1をセット。  または、Sheet2のA1に範囲名を付けて、それをセット。 コンボボックスのRowSourceがSheet3のA1~A10なら  Sheet3!A1:A10をセット。  または、Sheet3のA1:A10に範囲名を付けて、それをセット。 A1の値によって、A2の式が切り替わるようにするには、一案ですが、  =CHOOSE(A1,Sheet1!A4,Sheet2!A4,Sheet3!A4) のようにすれば値は求められます。回答になっていないかもしれませんね。 または、ユーザー定義関数  Public Function SheetAndRange(Sht As Integer, rg As Range)    SheetAndRange = Worksheets(Sht).Range(rg.Address)  End Function を標準モジュールに貼り付け、  =SheetAndRange(A1,A4) とすれば値は求められます。 範囲名ですが、これもユーザー定義関数を作れば切替えられます。 例として、Sheet1のA1:C1に範囲名『Total1』、Sheet1のA2:C2を範囲名『Total2』とします。  Public Function TotalChange(num As Integer)    TotalChange = Application.Sum(Range("Total" & num))  End Function を標準モジュールに貼り付け、  =TotalChange(1) とすればA1:C1の計、=TotalChange(2) とすればA2:C2の計になります。 ご参考に。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • エクセルVBAについて質問です。

    エクセルVBAについて質問です。 シート1のユーザーフォームにコンボボックスとテキストボックスが各1つずつ、 シート2のA列には1行目から順に「あ」「い」「う」と文字が入っていて、B列には「1」「2」「3」と値が入っています。 コンボボックスのリストにはシート2のA列の文字が選択できる状態にあります。 この状態で、例えばコンボボックスで「い」を選んだら、テキストボックスに自動的に「2」と入る、というように、コンボボックスのリストの中から任意の文字を選択したときに、テキストボックスにB列の値が入るようにするにはどのようにすればいいのでしょうか?よろしくお願いします。

  • ユーザーフォーム上のコンボボックスのリンク先はどうやって指定?

    エクセル97です。ユーザーフォームにおいたコンボボックスに表示させたいワークシート上のリスト、およびコンボボックスで選択された値をリンクさせたいセルの指定方法がわかりません。オプションボタンやチェックボックスのリンク先指定方法もわかりません。またユーザーフォームには「OK」「キャンセル」ボタンもないのでしょうか? エクセル95のときはダイアローグシートにコンボボックスを置き、コントロールの書式設定で簡単に指定が出来たのですが、97に変えてからは、敢えてエクセル5.0のダイアローグを挿入しないといけないようなので、出来ればユーザーフォームで作ってみたいのです。どうかよろしくお願いします。

  • EXCEL ユーザーフォームを使ったマクロ

    データの登録をするのにユーザーフォームを使おうと思うのですが、なかなかうまくいきません。教えてください。 ユーザーフォームにはコンボボックス、テキストボックス、コマンドボタンが貼り付けてあります。(コンボボックスのリストには呼び出したいシートの名前が入っています) コンボボックスのリストの中から呼び出したいシートを選択し、テキストボックスに入力した内容を、コマンドボタンを押すことで選択されたシート上の、あるセルに登録したいのですがどうすればよいでしょうか?

  • excelでVBAでユーザーフォームのリストBOX

    下記VBAの作成の仕方を教えていただけないでしょうか。 やりたいこと (1)sheet2のA1セル~A5セルまでの間の間をユーザーフォームのリストボックスに登録する (2)sheet1のA1セルをクリックすると、ユーザーフォームが起動し、任意のリストをクリックすると、 その値がA1セルに格納され。ユーザーフォームが終了する。 ※コマンドボタンは使わずにお願いします。なおexcel2000です。

  • Excel VBA ユーザーフォームのコンボボックスに表示する値の入力方法

    Excel Xを使用して、VBAのユーザフォームにコンボボックスを作りましたが、どうしてもコンボボックス内に表示する値の入力方法が分かりません。 WEBや本などで「これ」と思われるものを実験していますが、どれも表示することができません。 できるだけ詳しく教えていただけませんか? したいことは、  cbocenter というコンボボックスに値を出します。  値は List シートの A2 から A18 に入力済みです。  それと値から選択した値を data シートの J列 に  表示させたいのです。(行の指定はできています) 本当に困ってます。よろしくお願いします。

  • エクセルVBA「コンボボックスの値をワークシートに代入」

    エクセルVBA「コンボボックスの値をワークシートに代入」 連日質問してしまい申し訳ありません。・・・ 今回は「コンボボックス」にリストアップされている値をセルに入力したいのです。 画像を見て頂ければと思いますが、コンボボックス(左ウィンドウ画像)には25の文字列がリストアップされています。 このリストアップされている文字列をすべてワークシートのセルB4からの"4"列に入力したいのです。 なんだか滅茶苦茶ですが、ご理解頂ければご協力お願いします。

  • VBAマクロのコンボボックス 続き 3

    ほんとうに助かっております。 ここに質問するということはネットでみつけきれなかったということでご了承ください。 コンボボックスの設置場所はユーザフォームではなくワークシート上です。 ちなみにverはExcel2003です。 コンボボックスの性質といいますか、あるセルの値をみてリストに値を表示するかしないかを行いたいです。 しかし、すぐには反映されず一度動作(オブジェクト実行)させないと値の反映が行われません。 セルの値が変わると即座にコンボボックスリスト内の値の有無が反映させる方法を教えてください。 よろしくお願いいたします。

  • Excel VBA コンボボックスの使い方

     VBAでのコンボボックスの使い方をしらべているのですが、うまく見つかりません。コンボボックスのリストに登録するのはどうしたらよいのでしょうか?シート上のセル内のデータを使用しないとリストの登録は出来ないのでしょうか?VBA上で作成して、ユーザーフォームで選択できるようにしたいと思っています。VBAをはじめたばかりなので初歩的な質問で大変恐縮です。どなたかわかる方がいらっしゃったらお願い致します。

  • エクセル2003の使い方について

    エクセル2003の使い方について エクセル2003の使い方で教えていただきたいことがあります。 例えば、Sheet1のA1セルに数式を入力してある値がでてきました。 その値を別のsheet2のB1セル、sheet3のC1セル、sheet4のD1セルでも使用します。 これら別々のsheetではA1の値を使って別の計算をするため、 A1の値が変わるたびに変更になった値を手入力するのではなく、A1セルとリンクさせることはできますか? よろしくお願いいたします。

  • Excel VBA の質問です

    ユーザーフォームの中のコンボボックスの値をリストから呼び出して選択したとき、テキストボックスの値を同じリストの別の列から表示させたいです 会社の仕事で品番と品名がありますが、必ず品番は一つの固定の品名を持っています。 なので、品番を製品のマスタからひろってきてるのでわざわざ品名を入力するのは面倒です 製品マスタは例えばA列の2行目に ある品番があればその品名がB列の2行目に必ずあります よろしくお願いします

筆まめ住所録が出てこない
このQ&Aのポイント
  • 以前使った筆まめ住所録が表示されません。
  • ご利用の製品は筆まめVer.33で、パソコンのOSはWindows8.1です。
  • お問い合わせは、ソースネクスト株式会社の製品・サービスに関するものです。
回答を見る

専門家に質問してみよう