|
▼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にするものでしたが、
>今回は、・・・・・
βも、実行タイミングとしてはそのほうがいいと思っていました。
ちょっと時間ください。
|
|