FC2ブログ

Excelじゆうちょう

Excelのお絵描きツール『りっぷ2(りっぷつぅ)』のサポートページ、まずは「はじめに」をご覧ください。 [NewEntry] [Admin]

記事更新カレンダー

08 « 2018-09 « 10
- - - - - - 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 - - - - - -

やたらに多いカテゴリ

比較的新しい記事

新しいコメント

ありがたいブログ拍手

拍手コメント一覧(拍手はしない)

さみしいトラックバック

申し訳ないプロフィール

申し訳ない

管理人  [ 申し訳ない ]

pxivもやってます
リンクの一番上からのぞきに来てください
※閲覧にはユーザー登録が必要です

RSSってなんぞ?

広告は消せないらしい

FC2Ad

        --------       スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

        2011-07-02       Areasプロパティの応用

この前 は、Areasプロパティで複数のセルの選択範囲を個別に操作できることを説明しました。
今回は、それをちょっとだけ応用してみようと思います。
さっそくコードだけ、少し長くなっていますが、やってることはそんなに違いません。


'【コードウインドウ】
Public Sub testEachAreas()
Dim Color_no As Long '色番号
Dim For_Areas As Range 'カウンタ
If TypeName(Selection) = "Range" Then 'セルが選択されていれば
  Color_no = 41
  Selection.Clear '選択範囲をいったんクリア
  For Each For_Areas In Selection.Areas '選択範囲の数だけ繰り返し
    For_Areas(1) = "R" & For_Areas.Row & "C" & For_Areas.Column '左上セルのアドレス
    For_Areas.Interior.ColorIndex = Color_no '選択範囲の番号の色で塗りつぶし

    Color_no = Color_no + 1
  Next For_Areas
Else
  MsgBox "セルが選択されていません"
End If
End Sub


↓R2C1のところの色がColorIndexの41↓
Areasプロパティあり(For Each1)

ポイントは以下の3点。

(1)TypeName(Selection)で、現在の選択範囲の種類を調べています
場合によってはオートシェイプやワードアートが選択されているかもしれません。
そんなのをセルと同じように扱えばエラーが出ること必死です。
せっかくのプログラムでもエラーで止まってしまっては元も子もありませんからね、こういったちょっとした気遣い心遣いが大切なのです。

(2)For Eachループで、各選択範囲をループしています
ループのたび、Range変数のFor_rngに第1選択範囲から順番に代入されます。
これなら、いちいちSelection.Areas.Countで選択範囲の数を調べておく必要はありません。
逆を言うと、選択範囲の数が必要ならSelection.Areas.Countが必要なんですけど。

(3)For_rngはセルと同じように操作できます
For_rng(1)はその選択範囲の左上セルを指します。
ちょっと特殊な方法ですが、For_rng(1, 1)と同じです。
詳しくは、カテゴリ 一次元、二次元配列でのセル操作 を参照ください。

最後にもうひとつだけ紹介。
上のコードでループしたFor_Areasは、セル範囲そのものです。
ですから、それをまたFor Eachループにしてやればセルごとに処理を行えます。
各セルに、自分のセルのアドレスを入力させてみました。


'【コードウインドウ】
Public Sub testEachAreasRange()
Dim Color_no As Long '色番号
Dim For_Areas As Range, For_rng As Range 'カウンタ
If TypeName(Selection) = "Range" Then 'セルが選択されていれば
  Color_no = 41
  Selection.Clear '選択範囲をいったんクリア
  For Each For_Areas In Selection.Areas '選択範囲の数だけ繰り返し
    For Each For_rng In For_Areas '各選択範囲の中のセルごとに繰り返し
      For_rng = For_rng.Address '各セルのアドレス
    Next For_rng

    For_Areas.Interior.ColorIndex = Color_no '選択範囲の番号の色で塗りつぶし
    Color_no = Color_no + 1
  Next For_Areas
Else
  MsgBox "セルが選択されていません"
End If
End Sub


↓セルにアドレスを入力するなんてあんまし有益な操作じゃないけど↓
Areasプロパティあり(For Each2)
スポンサーサイト

コメント

コメントの投稿

管理者にだけ表示を許可  

トラックバック

http://likep.blog63.fc2.com/tb.php/223-f2d34b83

 | HOME | 

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。