| 
    
     |  | ▼mohimohi さん: 
 おはようございます。
 
 質問1.
 
 まず、シート上に設定されているオートフィルター領域は
 
 シート.AutoFilter.Range で取得できます。
 このプロパティは優れもので、たとえばリストの下に行を追加した場合
 あるいは、行を消した場合、自動的に増減します。
 
 いずれにしても 変数 rfA は タイトル行も含めた オートフィルターリスト領域になります。
 
 このオートフィルター領域の下、一行あけて、そこから下を作業域に使っています。
 抽出された行のみをここにコピペしています。
 変数 rfX は、この作業域の先頭のセルです。
 
 たとえば オートフィルター領域が A1:D10 だったとします。
 そうしますと、作業域としては A12 以降にしたいわけです。
 
 Set rfX = WS.Cells(rfA.Rows.Count + 2, "A")
 
 ここで、 rfA.rows.count はオートフィルター領域の行数、つまり 10 。
 rfA.Rows.Count + 2 は 12。
 したがって WS.Cells(rfA.Rows.Count + 2, "A") は WS.Cells(12, "A") になります。
 
 
 質問2.
 
 >ComboBox4の ソースコードの意味がよく理解できません。涙
 >なぜ、For j = 5 To zなのでしょうか。
 
 ここは、各行の 祖父 や 父 をピックアップしようとしています。
 各行の 祖父 や 父 は E列から始まりますので 始まりは 5 ですね。
 終わりは、固定で I列(9) でもいいかなと思ったのですが、将来、この項目が増えて、L列あたりまで、
 使うといったことになると、その都度、コードを直す必要が出てきます。
 で、ここでは、その行の値が入った最後のセルの列番号を
 z = Cells(i, Columns.Count).End(xlToLeft).Column
 で取得し、5 から z までチェックということにしています。
 
 これは、もしかしたら具合悪いかもしれません。
 つまり、J列より右側に、この 祖父 や 父 とは関係のない領域があるということになると
 逆に、そこも 祖父 や 父 扱いになってしまいます。
 なので、そういう場合は For j = 5 To 9 にしてください。
 
 >また、"父"、"母"、"祖父"、"祖母"のx=の値がなぜ1、2、3〜の順番ではないのでしょうか。。。。
 
 ★ えっ? これって 15/5/6(水) 7:46 のコードですよね。
 
 βとしては15/5/6(水) 21:56 のコードにしてもらっていると思っているんですが。
 前者はCheckBoxの名前が固定で、CheckBox3 が 祖父用 と決め打ちしています。
 まぁ、Select/Caseコードの順番としては1,2,3,・・・が美しかったかもしれませんが
 祖父ならこう、祖母ならこう、父ならこう と、年齢順に書きましたので、それぞれの
 CheckBox●の値が順不同になったというわけです。
 
 で、ついでに後者に関するメモ。後者は 祖父なら CheckBox3 だとは決めつけていません。
 極端にいえば、初期値として設定されている CheckBox3 を Ojiisan という名前に変更
 してあってもかまいません。
 
 そうすると各行の 父 や 祖父 が、どのチェックボックスに紐付いているのかということを
 把握する必要があります。で、ここで Dictionary が登場します。
 
 CommandButton1_Click の
 
 For Each ckb In OLEObjects
 If TypeName(ckb.Object) = "CheckBox" Then dic(ckb.Object.Caption) = ckb.Name
 Next
 
 わかりにくかったかもしれませんが、ここでは
 
 ・シート上の CheckBox(それぞれの名前は決め打ちしていません)を抜出し
 ・キーをそのキャプション(父 とか 祖父 とか)、データとして、そのCheckBoxの名前(CheckBox5 等)
 で登録します。
 すでに説明しましたがCHeckBoxの名前を、初期値ではなく任意のオブジェクト名に変更してあってもOKです。
 
 で、ComboBox4処理では、各行に現れる 父 や 祖父 といった文字列で、このDictionaryを読み
 そのデータであるCHeckBoxオブジェクト名を取得して、そのCheckBoxを参照しています。
 
 質問3.
 
 >エクセルを起動したときに、今のCommundButonの機能を反映させたいです!
 >CommundButonの機能は、コンボボックスの値をクリアし、チェックボックスをFalseにするものでしたが、
 >今回は、・・・・・
 
 βも、実行タイミングとしてはそのほうがいいと思っていました。
 ちょっと時間ください。
 
 |  |