• ベストアンサー

Excel入力規制応用教えて下さい!

A1のセルでプルダウンにてA,B,C,Dを選択します。 そのとき連動でB1のセルが変化するようにし、且つ自由入力できる方法をお教え頂きたいのですが可能でしょうか。 A1セルがAのときB1セルは1,同様にBのときは2,Cのときは3,Dのときは4 更にどの場合においてもB1セルに自由に数値を入力できるようにしたいのです。 つまりA1セルにAと入力するとB1セルが自動で1となりますが場合によっては1以外の数値(例えば5)を手入力したいということです。 IF関数を多少使うことがある程度の素人なもんですから出来ればVBAを使わずに済む方法があれば是非ご教授下さい。 よろしくお願い致します。m(_ _)m

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

  • ベストアンサー
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.4

No1です。 >何か良い方法はありますでしょうか? それではやはりVBAしか方法はないですね。 こうしましょう。 さきほどの回答No1で作ったシートを開き 1.Alt+F11キー 2.VBEが開きます。 3.メニューの挿入、標準モジュール 4.右側に開いた標準モジュールに下記をコピペ Sub TEST01() ActiveSheet.Range("B1") = Application.WorksheetFunction.Choose(Range("A1").Value, 1200000, 1100000, 1500000, 1350000) End Sub 5.シート上のコンボボックスを右クリック 6.マクロの登録でTEST01を選択 以上でご要望の通りになるはずです。

eternalsea
質問者

補足

VBAの方法まで教えて頂きありがとうございます! コンボボックスですが一覧表の他の部分を入力規則で作成しているのでそこだけ文字の大きさが合わなくなるのですが文字の大きさは変更できますか?また印刷したとき▼マークを出したくないので「オブジェクトを印刷する」のチェックを外すとA1セルの文字が印刷されません。 対処法はあるものでしょうか。いろいろ注文が多くて大変申し訳ありません。再度アドバイス頂けると幸いです。

その他の回答 (8)

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

A列にA,B,C,Dを入れるとB列に A  1200000  B  1100000 C  1500000 D  1350000 と出すとします。 B列には勝手な数を入れるときもあるとします。 そのときA列はどうなるのか判らないが Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 1 Then Target.Offset(0, 1) = WorksheetFunction.VLookup(Target, Range("$D$1:$E4"), 2, False) End If End Sub でもやってみれば、B列に式はないから、式は消えませんが。

eternalsea
質問者

お礼

VLOOKUPと言ってもマクロと組み合わせたものだったんですね。(^^; すいません、マクロのことは分からないのでピンときませんでした。 でも、式を書いていただいたので参考になります。少しいじれば他のことにも応用できそうなので自分なりにいろいろ試してみます。 回答ありがとうございました。(^^)

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.8

No1-4-5-7です。 とりあえずはうまくいったようでよかったですね。 > ▼マークを出したくないので「オブジェクトを印刷する」のチェックを外すとA1セルの文字が印刷されません。 対処法はあるものでしょうか。 これについては簡単ですよ。 コンボボックスのリンク先をA1以外(仮にX1)にして、A1セルはA,B,C,Dを入れたリスト(作りましたよね?)から =INDEX(リスト範囲,X1)で表示させればコンボボックスを印刷しなくともOKです。

eternalsea
質問者

補足

なるほど!コンボボックスはあまり使ったことがなかったので思いつきませんでした。理想に近い形となり大変参考になりました。何度も回答して頂きありがとうございました。(^^/

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.7

No1&4&5です。 >「中断モードでコードを実行することはできません」と表示されてしまいます。原因分かりますでしょうか・・・ え?変ですね。マクロの登録までは出来たのですね? それでコンボボックスを動かしたらこの警告がでたのですか? よくわかりませんが、ALT+F11キーで再度VBE画面を開き、メニューの「実行」、「リセット」をクリックして再度コンボボックスを作動してみてください。

eternalsea
質問者

お礼

ALT+F11でうまくいきました! ありがとうございます。 まだ不慣れなのでもう少しいろいろ試してみます。

  • wisemac21
  • ベストアンサー率39% (171/429)
回答No.6

B1=IF(A1="A",1200000,IF(A1="B",1100000,IF(A1="C",1500000,IF(A1="D",1350000,"")))) これでどうですか

eternalsea
質問者

お礼

一番最初に思いついた方法でしたが、No.3の方と同様にB1に直接入力すると数式が消えてしまいますよね。手入力後も選択可能としたいので数式は消したくないのです・・・我侭言ってすいません。(^^;

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.5

No1&4です。 書きもれていました。 No4の方法でやる場合、No1で作ったコンボボックスのリンク先のセルはB1からA1に変えて下さい。

eternalsea
質問者

補足

お世話さまです。追加のアドバイスありがとうございます! よく理解できないまま教えて頂いたマクロを登録してみたのですが、「中断モードでコードを実行することはできません」と表示されてしまいます。原因分かりますでしょうか・・・(^^;

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

入力規則で選んだA1セルの値でB1の値を左右する・決定したいなら、VLOOKUP関数を使えばよいのです。 表をどこかに(例D1:F4として) A  1200000  B  1100000 C  1500000 D  1350000 としてB1セルに=VLOOKUP(A1,$D$1:$f$4,2,FALSE)

eternalsea
質問者

お礼

回答ありがとうございます。しかしこの方法では手入力すると数式が消えてしまいますよね・・・(^^; 今までこのようなケースではVLOOKUPを使っていたのですが、今回はB1セルに直接手入力する必要がでてきたので相談させて頂きました。

noname#187541
noname#187541
回答No.2

こんばんは。 A1の値でB1の値を変化させるためには、VBAを」使わない限りB1に数式を入力しておかなければいけません。 数式の入っているセルに手入力をすると数式は消えてしまいます。 このことから、VBAを使わず、数式と手入力を両立するというのは無理です。 VBAをい使うか、仕様を見直すかどちらかにしてください。

eternalsea
質問者

お礼

やはりそうですか・・・ そのような気はしていたのですがVBAはよく分からないので一応可能か確認したかったのです。 それと作成したファイルを閲覧する人の中にExcelファイルが使えるフリーソフトを使っている人がいるのでVBAも大丈夫か不安だったのです。 アドバイスありがとうございました!

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.1

入力規則では無理です。 1.どこかにA~Dのリストを用意してください。 2.ニューから表示、ツールバー、フォームを選びます。 3.フォームのツールバーが表示されたら、そこから「コンボボックス」をクリックします。 4.プルダウンを配置したいところをクリックし、コンボボックスを貼り付けます。 5.張り付いたコンボボックスを右クリックし、コントロールの書式設定でリストとリンク先(B1)を選びます。 これでご要望のようになるはずです。

eternalsea
質問者

補足

merlionXX様、早速の回答ありがとうございます! 試してみた結果できましたが、ちょっと違うのです。 例題が悪かったので申し訳ないです。(^^; 「A1セルがAのときB1セルは1,同様にBのときは2,Cのときは3,Dのときは4」と書きましたが実際は「A1セルがAのときB1セルは1200000,同様にBのときは1100000,Cのときは1500000,Dのときは1350000」としたいのです。お手数お掛けして申し訳ございません。何か良い方法はありますでしょうか?

関連するQ&A