[[20121006230400]] 『アクティブセルにリストボックスから入力したい』(唯一無二) ページの最後に飛ぶ

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

 

『アクティブセルにリストボックスから入力したい』(唯一無二)
 Excel2003  WindowsXPを使用しています。 
 よろしくお願いします。

 検索で
 特定のセルにコントロールツールボックスのリストボックスから
 文字列を選択記載する方法はわかりました。
 具体的にはA1:A10にリストを作成し、選択一覧という名前をつけ
 データを記載したいセルに記載という名前をつけました。
 作成したリストボックスのプロパティのlinkecellに「記載」
 listfillrangeに「選択一覧」を設定する方法で出来ました。
 今回の質問ですが
 B2:B10のセルに順番に作成したリストボックスから選択記入
 したいと思ってます。
 B2セルを選択してリストボックスから選択してB2セルに記載
 B3セルを選択してリストボックスから選択してB3セルに記載
  :
 B10セルを選択してリストボックスから選択してB10セルに記載
 としたいと思っています。
 どうすればいいでしょうか。よろしくお願いします。

 せっかく用いた名前の定義を使うと・・・、
 リストボックス(仮にリストボックスのオブジェクト名をListBox1とします)のあるシートモジュールに

 Private Sub ListBox1_Click()
    ActiveCell.Value = Application.Range("記載").Value
 End Sub

 でも、B2:B10に入力規則を設定するでは、問題があるのですか?

 ichinose


 ichinoseさん。ありがとうございます。
 >でも、B2:B10に入力規則を設定するでは、問題があるのですか?

 入力規制だと選択範囲の一覧表示に際、データ数が多いとスクロールバー
 で確認が必要になるので、即一覧を表示させ、クリックで選択したいと 
 思いリストボックスの使用を考えました。入力規則のボックスはどこかの
 設定変更で枠のサイズとか変更可能なのでしょうか

 教えて頂いた方法やってみました。
「記事」はひとつのセルにつけた名前でしたので
 Private Sub ListBox1_Click()
    ActiveCell.Value = Application.Range("選択一覧").Value
 End Sub
 で実施しました。
 設定@
 リストボックスのプロパティのlinkecellに「記載」
 listfillrangeに「選択一覧」
 のままで実施
 設定A
 リストボックスのプロパティのlinkecell=設定無し
 listfillrangeに「選択一覧」
 で実施

 ともに選択一覧のデータのどのデータを選択してもアクティブセルには
 一覧の一番上のデータが記載されてしまいました。
 どこか考え違いをしているのでしょうか
 よろしくお願いします。 (唯一無二)


 "選択一覧" はリスト(つまり複数のセル)につけられた名前だよね。

 りんご
 いちご
 ばなな

 こんな縦3つのセル領域につけられた名前だったとする。

 LinkedCell は、このリストから選ばれた値が入るセル。このセルの名前が"記事"(最初の質問文の中では"記載"だったけど)

 そうすると、"いちご" が選ばれたときに、"記載"セルに、"いちご"が入る。逆に言うと、"いちご"が入っているのは"記載"セル。

 一方、ListFillRange である"選択一覧"は、何が選ばれようと、これは、元々の"リスト領域"。

 単一セル.Value = 複数セル.Value というコードを実行すると、左辺の単一セルには右辺の複数セルのなかの最初のセルの値が入る。
 だから、何が選ばれても "りんご"

 ichinoseさんの回答は

 Private Sub ListBox1_Click()
    ActiveCell.Value = Application.Range("記載").Value
 End Sub

 なぜ、

 Private Sub ListBox1_Click()
    ActiveCell.Value = Application.Range("選択一覧").Value
 End Sub

 にしたの?

 それと、ihinoseさんのコメントにもあるけど、せっかく用いた名前の定義を使うと・・・ ということで
 ActiveCell.Value = Application.Range("記載").Value と回答されているけど、LinkedCell指定の有無にかかわらず
 リストボックスでクリックされた値は ListBox1.Value に入っているので

 Private Sub ListBox1_Click()
    ActiveCell.Value = ListBox1.Value
 End Sub

 ActiveXコントロールに対しては、通常はこのような記述をすることが多いね。

 (ぶらっと)


 ぶらっとさん。きありがとうございます。
 >Private Sub ListBox1_Click()
 >  ActiveCell.Value = ListBox1.Value’リストで選択したデータという表現はこんな風に表現するのですね。
 >End Sub

 で希望通りになりました。
 リストボックス内のデータをクリックでアクティブセルに選択されたデータが入りました
 >単一セル.Value = 複数セル.Value というコードを実行すると、左辺の単一セルには右 辺の複数セルのなかの最初のセルの値が入る。
 だから、何が選ばれても "りんご"
 この説明もよくわかりました。

   > ActiveCell.Value = Application.Range("記載").Valueを
    >ActiveCell.Value = Application.Range("選択一覧").Value
 に何故かえたかですが
 今回はアクティブセルにリストから選択したデータを入れたいということで
 選択一覧のリストから選択したもの=Application.Range("選択一覧").Value
 と思いやってみました。
  こういう構文ではリストの先頭のデータのことをいっているのですね。

 名前:記事ですが
 具体的にはB1セルに「記事」という名前がついています。
 今回のアクティブセルはB2〜B10で、各セルをクリックで選択したあと、リストボックスから選択して
 B2にデータが入ったあと、B3をクリックしてまたリストボックスから選択してB3にデータが入るというものです。
 説明がわかににくくて申し訳けありませんでした。 (唯一無二)


 >具体的にはB1セルに「記事」という名前がついています。
 >今回のアクティブセルはB2〜B10で、各セルをクリックで選択したあと、リストボックスから選択して
 >B2にデータが入ったあと、B3をクリックしてまたリストボックスから選択してB3にデータが入るというものです。

 記載という名前の実態が セル$B$1なら、
 >ActiveCell.Value = Application.Range("記載").Value

 で作動しますけどねえ!!
 解決したみたいなのでよいですが、今後のためにきちんと見直してみてください。

 本日、地区の運動会(8時開催で、朝7時30分ぐらいまで雨だったので中止かと思ったのですが)でした。
 これ、運動会とは名ばかりの真昼間からの宴会なんです。3時半ぐらいに帰宅、
 もう、ふらふらなので本日は、退却です。

 ichinose


 ichinoseさん、ふらふらの中、再度のご支援、ありがとうございます。
 結果はichinoseさんのおっしゃるとおり
 >ActiveCell.Value = Application.Range("記載").Value でできました。
 はやとちりでLinkedCellのデータ(記載)を削除しておりました。
 ぶらっとさんのご支援のなかにあった
 >LinkedCell指定の有無にかかわらず
 >リストボックスでクリックされた値は ListBox1・・・
 を受け、プロパティのLinkedCellの「記載」を削除したまま作業をしておりました。
 構文を実行すると
 B1セル(名前:記載)にリストから選んだデータが入り、アクティブセルにも
 同じデータが入りました。
 ActiveCell.Value は今選択中のセルの中身データ
 Application.Range("記載")の意味がよくわかりませんでしたけど
 Application.Range("記載").Valueは「記載」という名前をつけたのセルの中身(データ) と解釈することにしました。
 ぶらっとさんのせっかく、ichinoseさんが教えているのに、なぜ、「記載」を「選択一覧」にかえたの?の質問の意味もわかりました。
 おふたかた、ありがとうございました。すっきりしました。(唯一無二) 

  


コメント返信:

[ 一覧(最新更新順) ]


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