Range(.Cells(a,b),.Cells(c,d))
変数などによって可変するセル番地を指定したいとき、Cellsプロパティをうまく使います。
ただし、複数範囲のときはこれだとうまくいきません。
そこで、Rangeプロパティの中で
「Range(.Cells(a,b),.Cells(c,d))」
と使うわけですが、このときCellsのまえの「.(ピリオド)」に注目!
この「.(ピリオド)」がなくても動いてくれますが
いっぱいあるCellsの中から探そうとするので
ときどきうまくいかないときがあるみたいです。
そこで、
「Range(Workbooks("a.xls").Worksheets("b").cells(a,b),Workbooks("a.xls").Worksheets("b").cells(c,d))」
して、ブック名シート名を指定してやれば大丈夫。
しかし、これではまどろっこしいです。
だからWithで囲ってやればいいのです。
【使用例】
With Workbooks("aa.xls").Worksheets("bb")
.Range(.Cells(m, 9), .Cells(m + 2, 104)).ClearContents
End With
ThisWorkbook
オブジェクト名を指定するとき
「Workbookオブジェクト.Worksheetオブジェクト.Rangeオブジェクト.」
といった具合にコードを書いていきますが、
いま記述しているVBAで、自分のワークブック名を読んでほしいときが多々あります。
ThisWorkbook
を使います。
これまではいちいちコードのブック名を変えていました。
自ブック名「chemeetday.xls」の場合
Workbooks("chemeetday.xls").Worksheets("chemeetday")。。。。
といった具合です。
これに疲れて、考えた方法が、
ファイル名を自ブックどこかのセルに呼び出して、そのセルを読む方法。
これも少し手間だったがThisWorkbookで解消。
【使用例】
ThisWorkbook.Worksheets("aa").Cells(m, 3).PasteSpecial Paste:=xlPasteValues
With ThisWorkbook.Worksheets("bb")
はじめまして
ブログというものを始めたのはこれで2回目です。
前も、ちょっとやってたんですが、更新頻度が低くなり、日記をmixiで書くようになったので、放置状態。
ここでリスタート切りたいと思います。
仕事ではエクセルに触れる機会が多く、毎日新しい発見があります。
そこでのこ とを書き留めていくのが目的です。
とりあえず、これではじめます。
今後それに加わっていく可能性があるのは、
ドラム
F1
と自分が興味があることですね。
まぁ、あまりルールを決めずに、自分のペースでやっていきたいです。