OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

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

  • すぐに回答を!
  • 質問No.150125
  • 閲覧数208
  • ありがとう数5
  • 気になる数0
  • 回答数3
  • コメント数0

お礼率 59% (70/117)

ユーザーフォームの使い方で、テキストボックスやコンボボックスのControlSourceを,フォームを開いたのとは別のシートのセルにあてたいんですけど、できますか?
同様に、コンボボックスのRowSourceのリストも、別のシートの値を拾いたいんです。
具体的に言えば、ユーザーフォームを開くのは、常に「Sheet1」であって、入力した内容を表示するのは「Sheet2」なのです。
コンボボックスのリストは本当は、「Sheet3」の値を拾いたいのです。
今はよくわからないので、全部「Sheet1」にリンク(?)させて、値を取得させるようにしてます。
それと、セルの数式の中に別のセルの数値を代入できますか?
例えば、あるセルの数式が「=Sheet2!A4」だとしましょう。
この場合の「Sheet2」の「2」に、例えば、ある別のセルの値を代入して、
「=Sheet3!A4」とかにしたいのです。
つまり「=Sheet”A1”!A4」みたいにして、「A1」のセルの値が
「2」、「3」に変われば元の数式も変わる、みたいに。
同じように、セルの範囲につけた名前や、リンクするファイルの名前も数式の変数に入れられるのでしょうか?
とりあえず、セルの数式の中に、別のセルの値を”文字”や”数値”として入れたいのです。
ちょっと説明がわかりにくいかもしれないけど、教えて下さい。
通報する
  • 回答数3
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.3
レベル13

ベストアンサー率 68% (791/1163)

●平成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

お礼率 59% (70/117)

ありがとうございました。
なるほど~。すごいですね。
また別の質問を欠きこみますので、お時間が有ったらよろしくお願いします。
投稿日時 - 2001-10-19 16:30:35
-PR-
-PR-

その他の回答 (全2件)

  • 回答No.1
レベル13

ベストアンサー率 68% (791/1163)

テキストボックスのControlSourceがSheet2のA1なら  Sheet2!A1をセット。  または、Sheet2のA1に範囲名を付けて、それをセット。 コンボボックスのRowSourceがSheet3のA1~A10なら  Sheet3!A1:A10をセット。  または、Sheet3のA1:A10に範囲名を付けて、それをセット。 A1の値によって、A2の式が切り替わるようにす ...続きを読む
テキストボックスの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の計になります。

ご参考に。

  • 回答No.2
レベル13

ベストアンサー率 68% (791/1163)

後半部分についての別方法を思いつきました。 >それと、セルの数式の中に別のセルの数値を代入できますか? A1にシート番号を入力するとして、=INDIRECT("Sheet"&A1&"!A4") で指定したシートのA4の値を表示します。 >同じように、セルの範囲につけた名前 単一セルにDATA1、DATA2、DATA3・・・と名前が付い ...続きを読む
後半部分についての別方法を思いつきました。

>それと、セルの数式の中に別のセルの数値を代入できますか?
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

お礼率 59% (70/117)

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

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ