1 |
親愛なる貴方のために・・・え?誰?
ユーザーフォームのコントロールが、セル範囲のアドレスを必要とする場合があります。「数値を合計するセル範囲」、「文字装飾を行うセル範囲」、「印刷するセル範囲」などなど、モーダルのユーザーフォームが表示されている状態で、セル範囲を指定するときは[
RefEditコントロール ]を使います。
[ RefEditコントロール
]で指定したセル範囲を元に、何かしらの処理を行うときは、範囲を示す値の使い方を工夫する必要があります。それは、[
RefEditコントロール ]でセル範囲を指定すると、一緒にワークシート名も、[ RefEditコントロール ]の[ Textプロパティ
]に含まれるためです。
例:[ RefEdit1.text ] は、 [ Sheet1!$A$6:$F$13 ]
を返します。
一定のワークシートでしか範囲指定を行わないのならば、シート名の部分を固定して扱えば、さほど問題にはなりませんが、ユーザーが複数のワークシートにあるセル範囲を指定するようならば、[
RefEditコントロール ]が持つ値は、ワークシート名とセル範囲を分けて扱います。
- ★ [
RefEditコントロール ]で、セル範囲を指定して使う
- 文字列(ここではワークシート名も含まれたセル範囲名)をシート名とセル範囲に分けるため、ワークシート関数の[ Find関数
]を使っています。ワークシート名とセル範囲を示す文字列にある「!(アテンションマーク)」を探し文字列の先頭からの位置を求め、[
Lef関数
]でワークシート名をあらわす文字までを分割している、かなりキツメの乳酸です。
古いExcelのバージョンでは使えませんが、使っているバージョンが2000以上なら、すんなりと[
Split関数 ]で、1次元配列に分けたほうが良いですね。
- ★
区切り文字を指定して、文字列(セルアドレスの参照式)を分割して表示する
- [ RefEditコントロール
]で指定したセルのアドレスは、シート名も含んだセルのフルアドレスになっていますので、コードの組み方によっては、その値を加工する必要があります。ここでは、ワークシート名とセルアドレスを接続している「!(アテンションマーク)」を使い、[
Split関数 ]で1次元配列に分け、それぞれをメッセージボックス内に表示します。
|