• ベストアンサー

excel VBAの分岐の書き方について

excel VBAの分岐の書き方について 列Aに、 ああ  いいい  うううう  ああ いいい ええ ・・・ のようなデータがあるとします。 このときにVBAのフォームで、 ああ いいい うううう ええ をチェックボックスで選ばせ、該当する行のみに処理を行いそれ以外には処理をしない、というプログラムを考えています。 どのように実装するのが正しい書き方でしょうか? 処理すべき行数は200行程度。ああ、いいい・・・等は10種類ほどで可変です。 in演算子で、配列をみれるような仕掛けがあるといいのですが。。。

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

次の通りに作成します。 ListBoxを配置し,プロパティウィンドウで ListStyleをfmliststyleoption MultiSelectをfmMultiSelectMulti にしておく CommandButton1を配置しておく Private sub Userform_Initialize()  dim h as range  dim Target as range  set target = worksheets("Sheet1").range("A2:A" &  worksheets("Sheet1").range("A65536").end(xlup).row)  for each h in target   if application.match(h, target ,0) = h.row - 1 then    me.listbox1.additem h.value   end if  next end sub private sub CommandButton1_Click()  dim Target as range  dim i  dim c as range  dim c0 as string  set target = worksheets("Sheet1").range("A2:A" & worksheets("Sheet1").range("A65536").end(xlup).row)  target.interior.colorindex = xlnone  for i = 0 to listbox1.listcount - 1   if me.listbox1.selected(i) then    set c = target.find(what:=me.listbox1.list(i), lookat:=xlwhole)    if not c is nothing then     c0 = c.address     do      c.interior.colorindex = 4      set c = target.findnext(c)     loop until c.address = c0    end if   end if  next i end sub

pika_po
質問者

お礼

ありがとうございます!リストボックスのところの設計も大変参考になりました!

関連するQ&A