vba裏技,技,論理 - シートの処理
現行のエクセルの一番の欠点は一度消去(delete)したシートを復活できないことである。だからこの操作は慎重に行いたい。
あるシートを消去するのは
Activesheet.delete
である。しかしこのコマンドを自分を含めたユーザーが実行しようとすると、画面ではそれで良いかと確認してくる。全くプログラムを知らない人は何だろうと訝るし、プログラムを組んだ人自身もワンステップ余計なことをしなければならない。だから上記のコーディングの前に
Application.Displayalerts=False
と画面が表示されないようにしておくと便利だ。この「displayalerts」は注意書きのことで、このコマンドは注意書きが表示されないという意味だ。
シートの選択をするのに
複数のシートがある場合、最初のシートは
sheets(1)だし、
最後のシートは
sheets(sheets.count)
である。
ただ特殊な場合を除いてシートをインデックス番号で指定しない方がいい。シートの順番は変わることがあるので、必ずシート名を指定する。
だから同じことを最後のシートまで各シートにするときは次のように書く。
Sheets(1).select
Do
[b5].value=”売上額
If Activesheet.Index=Sheets.Count Then
Exit Do
End If
Activesheet.Next.Select
Loop”
この時if end クローズとactivesheet.next.selectを逆に書くと
最後のシートの処理をするときにエラーになってしまうので注意しなければならない。
ここで「index」とはシートが何番目にあるかという指標である。
「sheets.count」はシートの数の数字を意味し、だから「sheets(sheets.count)」は最後のシートを示す
シートのタブの色を指定するのは例えば
Sheets(2).Tab.ColorIndex = 3(赤)
塗りつぶしの色を解消するのは
Sheets(2).Tab.ColorIndex = xlNone
と書く。
セルの塗りつぶしは
Selection.Interior.ColorIndex=3
文字の色をしているのは
Selection.Font.ColorIndex=5
このようにセルについては塗りつぶしも文字の色も指定できるがシートの名前タブの文字色は指定できない。
数あるシートを名前順に並び換えることも可能だ。手順は
① 空のシートを一番前に追加する
② 次のシートから最後のシートの名前を空のシートに順に貼り付ける
③ 張り付けたシート名をあいうえお順に並び換える
④ 一番上のシート名のシートを選択して空のシートの前に移動するコマンドを書く
⑤ リストにしたシート名が最後に来るまで繰り返す
⑥ 最初空であったシートを削除する
シートをあいうえお順に並べ変えておくと何かと便利だ。
シートをコピーするには
Activesheet.Copy after:=ActiveSheet
三枚のシートを追加するのは
Worksheets.Add(After:=Worksheets(1), Count:=3)で、
もし「after:=」以降と書いておかないで、ただ
Activesheet.copy
とするとそのシートを含むブックができてしまう。bookを新しく作成すると3つのシートができるが、この場合はそのsheetのコピーだけの一つのシートが作成される
明日に続く
酒巻 修平