• ベストアンサー

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

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

  • takki
  • お礼率50% (2/4)

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

  • ベストアンサー
  • 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
質問者

補足

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

関連するQ&A

  • VBAの配列の質問です

    こんにちは、VBAについての質問です。 配列について3点ほど質問致します。 ・ フォームに貼り付けた、ラベル、テキストボックス、コンボボックスの名前を配列にして、その数自体も変数にして (上記のコントロールの数は当然分かっているのですが敢えて変数名でとりたいのです)、配列のデーターとして入れて やることは可能なのでしょうか。   特に疑問なのは、テキストボックス、コンボボックスには「文字型」、「数字型」が有ります。その場合の配列の型 はどのように宣言してやる のでしょうか。 ・ 仮に上記が可能ならば、特に疑問なのは「数字型」は「数字型」として、セルには記入されるのでしょうか。   それとも、数字の場合には、セルへの入力時とか、セルからの出力時とかに、キャスト等で型変換等の処理が必要になる のでしょうか。 ・ またそれとは別の配列として、テキストボックス、コンボボックスのデーターだけを配列データーとして入れてやるのは 可能なのでしょうか。

  • Excel VBA コンボボックスで空白を削除

    Excel2010でマクロを作っています。 ユーザーフォームに多数配置済のコンボボックスに、特定のシートの特定のセル範囲(B2:B71)のデータを配列に取り込みたいのですが、セル範囲には空白セルも多数あります。コンボボックス表示時には空白を削除したいのですが、どのようにしたら良いでしょうか? なお、コンボボックスの名前には規則性があり、CbxStp1、CbxStp2、CbxStp3、・・・CbxStp31と連番にしてあるので、For i = 1 to 31 ~ Next で、コンボボックス名を「"CbxStp" & i」と指定して作れると助かるのですがいかがでしょうか。

  • Excel VBA セル値の配列代入について

    Excel VBAで、セルの値を配列に代入する処理を、よくやります。 arr=Range("$A1:$C1000").value とかですね。これに関して、オートフィルタで絞り込んだ結果の可視セルだけを、配列に代入するということは、やっぱり出来ないのでしょうか。

  • Excel VBA

    Excelのコンボボックスについての質問です。 sheet(1)のA2~A20までコンボボックスに入る選択肢が入っています。 フォーム1のコンボボックス1にその選択肢を入れたいのですが、なるべく短いコードを教えていただきたいのですが…。 ちなみに私の知っているコードは コンボボックス1.Additem Range("シート1!A2") コンボボックス1.Additem Range("シート1!A3")      ・      ・      ・ という感じです。 どうかよろしくお願いいたします。

  • エクセルVBA コンボボックス

    今データ入力用のフォームmainがあります。 そこで複数のデータを入力していくのですが、そこでわからなくなりました。 入力用コンボボックスがひとつだけのときは Private Sub userform_Initialize() Dim 配列(2) 配列(0) = "データ1" 配列(1) = "データ2" 配列(2) = "データ3" 入力用コンボ.List = 配列 End Sub Private Sub 入力用コンボ_Change() MsgBox 入力用コンボ.ListIndex End Sub としていたのですが、複数になった場合の理屈を含めわかりません。 一つの入力用フォームにコンボボックスが複数あった場合はどうすればよいのですか?

  • VBA コンボボックスで選んだ値を取得するには

    ユーザーフォーム上のコンボボックスから値を選択し、その値を変数として使いたいのですが、うまくいきません。 コンボボックスのコードで Private Sub ComboBox1_Change() moji1 = ComboBox1.Text Range("A1").Value = moji1 のようにすれば、コンボボックスから値を選んだ時点でA1セルにその値をコピーできるのですが、同じユーザーフォーム上にあるコマンドボタンをクリックして実行する「マクロ1」にてこのmoji1という変数を使いたいのです。 マクロ1にて、上記と同じ Range("A1").Value = moji1 というコードを記述しても、ユーザーフォームで選択した値が消えており、empty値となってしまいます。 原因をご存知の方はお教えください。

  • Excel VBA コンボボックスについて

    はじめまして、エクセルVBAの超初心者です。 コンボボックスを使ってマクロを組みたいのですが、どうしてで良いか分からず教えていただければと思います。 エクセルのシートに下のようなデータがあるとします A       B りんご     あおもり りんご     ながの みかん     わかやま バナナ     フィリピン コンボボックス1にAセルを重複しないようにセットして コンボボックス2に1で選択されたものをセットしたいのですが。 プロパティのListFillRangeでAの範囲を選択しても、重複してしまい、それからどうして良いのかわかりません。 どなたか教えて頂けませんか?

  • エクセルでの値の自動代入

    エクセルでワークシートのセルからでもユーザーフォームからでもいいのですが、違うワークシート上の表(列が項目、行が日付)の当日日付のセルにマクロで作ったボタンを押すと値が挿入されるような方法はありますか? アクセスで値の代入のようにできればいいのですが。 マクロでもVBAでもいいのですが、できる方法はあるでしょうか?

  • エクセル、フォームでのVBAについて(コンボボックス)

    エクセル97でフォームのコンボボックスを使用する場合の質問です。 ワークシートにコンボボックスを10個配置しました。 入力範囲はすべて同じです。 このコンボボックスで特定の項目(入力範囲6番目)を選んだ場合、次のマクロを実行するようにしようと思っています。マクロを10個書いてそれぞれのコンボボックスに登録してもいいのですが、それよりはどのコンボボックスが使用されたか特定できればすべてのコンボボックスに一つのマクロで対応できます。 コンボボックスに番号(たとえばコンボ1~コンボ10)を振ってその番号の取得ができればいいのですが、どのように記述したらよいのか検討がつきません。 お教えください。

  • エクセルVBA

    初心者です エクセル2003 ユーザーフォームのコンボボックスの連携について教えてください   Seet1       A     B     C     D      E     F           1   種類1   商品1  商品A  商品あ        コンボ1  2   種類2   商品2  商品B  商品い 3   種類3   商品3  商品C  商品う                4   種類4   商品4  商品D  商品え        コンボ2 5   種類5   商品5  商品E  商品お (1)コンボボックス1と2を別々のユーザーフォームで配置(ダブルクリックにて表示 F1とF4) (2)コンボボックス1でA列の種類を選択によりコンボボックス2のリストが変わる (3)コンボボックス1で選んだ種類をF1のセルに挿入 (4)コンボボックス2は種類1の場合はB列             種類2の場合はC列             種類3の場合はD列のリストとします (5)コンボボックス2で選択した商品をF4に挿入といった具合です 何度か挑戦しましたが、同一ユーザーフォームにコンボボックス2つは成功するのですが うまくいきません コード及びコード記入場所を教えていただけませんか よろしくお願いいたします

専門家に質問してみよう