• ベストアンサー

エクセルVBAで、配列に値を代入する方法

今、エクセルでデータベース関係のマクロを組んでるんですが、うまくデータの代入ができなくて困ってます。 詳しくは、フォームにあるコンボボックスの選択肢が何か選択されている時は、特定のセルに”○”が入るようにしたいんですが、コンボボックスが複数あるので、配列にして1度に代入したいと考えてるんですが、何かよい方法はありませんか? それともただ文法がおかしいだけでしょうか?できたら、データを代入する所だけでいいのでコードを書いていただけませんか? よろしくお願いします。

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

  • ベストアンサー
  • popesyu
  • ベストアンサー率36% (1782/4883)
回答No.3

どこで止まるのかも分からないとなると 基本的なところが分かってないんでしょうねぇ。 そのレベルから始めるのであれば、 私がいい加減につくったものよりも 参考書できちんと勉強した方がよいのではと 思ったりもしますが。 まぁ一応送っときます。

takki
質問者

お礼

大変、いいものを作ってもらってありがとうございました。これからはもっとしっかり勉強しようと思います。 今回は、無謀で急ぎの仕事だったので、勉強よりも人を頼りにしました。 これからも…と言うと嫌かもしれませんが、よろしくお願いします。 最後に、大変ありがとうございました。

その他の回答 (2)

  • popesyu
  • ベストアンサー率36% (1782/4883)
回答No.2

んー 改良版です。 Sub test() Dim mycmbbox As New Collection Dim X As Integer With mycmbbox .Add Item:=ComboBox1 .Add Item:=ComboBox2 .Add Item:=ComboBox3 .Add Item:=ComboBox4 End With For X = 1 To 4 If mycmbbox(X).ListIndex <> -1 Then Cells(X, 1) = "○" End If Next X End Sub どこが違うかというと With mytxtbox が With mycmbbox になってます(笑) スペルミスでした。 まぁさすがにこれは修正されたと思いますが。 これで試したところちゃんと動きましたが。 はて。どこで止まったのでしょう。

takki
質問者

補足

確かに、そのことには気付いたんですが…。 基本的な何かがじぶんには判ってないんだと思うんですが。もし良かったら添付で送ってもらえませんか… takki55@hamal.freemail.ne.jp 3度もお手数をお掛けしてすみません。 フリーメールに添付できるのかもちょっと定かではありませんし…。 ほんとにすみません。

  • popesyu
  • ベストアンサー率36% (1782/4883)
回答No.1

コンボボックスを配列化するということで 見本です。 Dim mycmbbox As New Collection With mytxtbox .Add Item:=Combobox1 .Add Item:=Combobox2 .Add Item:=Combobox3 .Add Item:=Combobox4 End With これでmycmbboxで配列にまとめたことになります。 これでご希望の操作をするなら for x = 1 to 4  if mycmbbox(x).listindex<>-1 then   Cells(x,1)="○"  end if next x こんな感じで。 チェックしてないので動くかどうかわかりません(笑) では

takki
質問者

補足

ご回答どうもありがとうございました。 しかし、どうもうまく動いてくれません。 どうしたもんでしょうか? フォームとかの設定が悪いんでしょうか? 私は、配列についてもっとしっかり勉強すべきですかね? 違うかもしれませんが、 括弧でくくってない配列をくくってある配列として代入しようとしていませんか? 自分でも何が言いたいのか良くわからないです。 すみません。