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のコピーだけの一つのシートが作成される

明日に続く

酒巻 修平

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です