• ベストアンサー

VBA コンボボックスの項目入力

お世話になります。 Excel2002のVBAにて コンボボックスへの項目の入力について 質問させて頂きます。 現在行いたい処理はB27からB56のセルに入力されている数値 のなかからB62からB91に入力されている数値と重複の無いもの をコンボボックスへ追加したいと考えております(空白セルは 追加しない)。 以下の通りではどうもうまくいかないので宜しくお願いします。 ' For i = 27 To 56 ' If Range("B" & i) <> "" Then ' ComboBox1.AddItem Range("B" & i) ' For j = 62 To 91 ' If Range("B" & j) <> "" Then ' ComboBox1.RemoveItem Range("B" & j) ' End If ' Next ' End If ' Next

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

  • ベストアンサー
  • onlyrom
  • ベストアンサー率59% (228/384)
回答No.3

>ComboBox1.RemoveItem Range("B" & j) RemoveItemメソッドはこんな構文ですか? 違うのでは? 疑問が生じたら、先ずヘルプ参照!(^^;;; ま、それは置いといて、 初めから62~91にないものを登録した方がいいでしょう。   質問者のコードを利用すると(Forを2度使用) Dim flag As Boolean For i = 27 To 56   flag = False   If Range("B" & i) <> "" Then     For j = 62 To 91       If Range("B" & j) = Range("B" & i) Then         flag = True         Exit For       End If     Next j     If flag = False Then       ComboBox1.AddItem Range("B" & i)     End If   End If Next i '----------------------------------------- '-------- Findメソッドを使うと ---------- Dim FoundCell As Range For i = 27 To 56  If Range("B" & i) <> "" Then    Set FoundCell = Range("B62:B91").Find(Range("B" & i).Value, , xlValues, xlWhole)    If FoundCell Is Nothing Then      ComboBox1.AddItem Range("B" & i)    End If  End If Next i '---------------------------------------------   以上です。  

shunnosuke
質問者

お礼

意図したとおりの結果を得ることができました! 本当にありがとうございました(^^)

その他の回答 (2)

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.2

質問者さんのやりたいことは、こういうことではないの? (方法的には、必ずしも賛成ではありませんが…) ' For i = 27 To 56 ' If Range("B" & i) <> "" Then ' ComboBox1.AddItem Range("B" & i) ' End If ' Next ' For j = 62 To 91 ' If Range("B" & j) <> "" Then ' ComboBox1.RemoveItem Range("B" & j) ' End If ' Next

shunnosuke
質問者

補足

おっしゃる通りです。 この方法も試したのですが、下のFor~Nextのループの部分で エラーが出てしまい、うまくいかないのです。

  • akina_line
  • ベストアンサー率34% (1124/3287)
回答No.1

こんにちは。  貴方の書いたプログラムには、「B27からB56のセルに入力されている数値のなかからB62からB91に入力されている数値と重複の無いもの」という条件が抜けています。  具体的には、「 If Range("B" & j) <> "" Then」は「B62からB91が空白セルでなければ」という条件にしか過ぎません。ここを見直してください。 では。

shunnosuke
質問者

お礼

ご回答ありがとうございます。 >> B27からB56のセルに入力されている数値のなかからB62からB91   に入力されている数値と重複の無いもの この指定方法が分からないので、私は取り合えずB27からB56のセルに 入力されている数値は全て項目に追加して、そこからB62からB91まで の入力値を項目から削除するという方法を取ったつもりなのですが、

関連するQ&A