[[20070925115411]] 『VBAにてコンボボックス入力』(澪) ページの最後に飛ぶ

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

 

『VBAにてコンボボックス入力』(澪)

 Excel2003/WinXP

 コンボボックスに入れる値を、シート上の表を使わずに入れたいのですが、
 オブジェクトが必要です、と出てしまいます。
 コンボボックスの名前はcoShohinです。
 どう記入すべきか、教えて頂けないでしょうか?

 Sub 入力データフォーム()

 Dim coShohin As String

 Forms!form("入力フォーム").coShohin.BoundColumn.Value = 0

     'フォームの初期化でコンボボックスに値を代入する
     Forms!form("入力フォーム").coShohin.AddItem "果物"
     Forms!form("入力フォーム").coShohin.AddItem "文房具"

 ・
 ・
 ・
 End Sub

 入力フォームというのは、このコンボボックスのあるシート名です。
 Sheets!sheet("入力フォーム").coShohin.…
 にしても、エラーが出てしまいます。
 しかし、なぜかコンボボックス自体には値が入っています。

 最初はMe!の記述をしていて、それを修正したのですが、
 やはりまだ間違っているようです。
 エクセルのシートを入力フォーム代わりにして、
 別のシートに記入するためのマクロですので、
 コンボボックスに値が入っているだけでなく、
 エラーをなくさないと、入力作業までマクロが進んでくれません。
 どうぞよろしくお願い致します。

 Accessの質問ではないですよね?

 Sheets("入力フォーム").soShohin

 ! の代わりに . で繋げてください。
 (seiya)

 すみません。
 普段Accessを使っていたので、間違えてしまいました。

 教えていただいた通りに値を入れなおしてみたのですが、
 やはりエラー文が出ます。

 今度は
 オブジェクトは、このプロパティまたはメソッドをサポートしていません。
 と出てしまいます。

 Sheets("入力フォーム").soShohin.BoundColumn.Value = 0

 ではいけないのでしょうか?

(澪)


 ").soShohin
  ↓
 ").coShohin
 (dack)これですか?

 >dack様
 あ、気づいてませんでした。(汗)
 ありがとうございます!
 こちらは解決致しました。

 ところで、上記の後、コンボボックスで選択された値によって、
 処理を変更するIF構文を組んでいるのですが(上記の文章の直後にIF文が続きます)、

    If Sheets("入力フォーム").coShohin.ListIndex = "果物" Then

 という部分が無視されてしまいます。
 果物⇒果物というシートに値を代入
 文房具⇒文房具というシートに値を代入
 とする処理がしたいのですが、
 現在はElseで処理している文房具のシートに全ての値が代入されてしまいます。

 コンボボックスで選択された値を認識するにあたり、
 上記文章ではどう間違っているのでしょうか?

 あわせて教えて頂けませんでしょうか?
 よろしくお願い致します。

 (澪)


 > .ListIndex = "果物"
 .Value = "果物"
 に変更してください。
 (seiya)

 ありがとうございました!

 Sheets("入力フォーム").coShohin.Value = 0

 どうしても値が0と認識してしまうので、
 この一文を削ってみたらうまくいきました。

 しかし、これを削ると、コンボボックスを選択すると、
 選択するたびにコンボボックスの中身の順番が変わってしまうようです。
 こういうものなのでしょうか?

 (澪)

 >If Sheets("入力フォーム").coShohin.ListIndex = "果物" Then
 これを

 If Sheets("入力フォーム").coShohin.Value = "果物" Then
 へ変更ですよ?

 >Sheets("入力フォーム").coShohin.BoundColumn.Value = 0
 これは変更しない。

 だと思いますが・・外してるかな?(mitsu)

 >mitsu様
 いえ、そちらはもう解決しているというか、
 .Valueに変更しても解決しなかったので、
 >Sheets("入力フォーム").coShohin.BoundColumn.Value = 0
 を削ったら、.Valueでうまくいった、という意味です。

 わかりにくくてすみません。

 (澪)


 順番が変わることはないと思いますが?
 (seiya)

 項目は2つなのですが、片方を選択する度に順序が上下入れ替わります。
 でも、よくよく考えたら、選択されたものが最上位に表示され、
 選択されていないものが下方に表示されるのは、もしかして普通なのでしょうか?

 (澪)

 ComboBox のリストをどのようなタイミングで生成しているか、また
 Combobox のイベントプロシージャで何かそれに相応するコードが
 書かれているかは不明ですが、通常はそのようなことはありませんが?
 (seiya)

 コンボボックスのリストをシートに作成する事にしたら、
 順番が変わらなくなりました。

 ありがとうございました。

 (澪)

コメント返信:

[ 一覧(最新更新順) ]


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