エクセルはA1にカーソルを合わせて保存するとかいうマナーに勝つ

エクセルはA1にカーソルを合わせて保存するとかいうマナーに勝つ

はじめに

「エクセルはA1にカーソルを合わせて保存するのがマナーだよ」

そんなことを言われることがあるらしい。

そうツイッターランドで目にした。

かくいう自分も言われたことがある。

というわけで作ってみた。

Sub A1セーブ()
'
' 全シートA1にカーソルを合わせます
' 全シート拡大率を100%にします
' 最終的に1シート目のA1にカーソルにカーソルを合わせます
'
'
    For Each objSheet In ThisWorkbook.Worksheets
        objSheet.Activate
        objSheet.Cells(1, 1).Select
        ActiveWindow.Zoom = 100
    Next
    
    ThisWorkbook.Worksheets(1).Activate
    ActiveWorkbook.Save

End Sub

カーソル合わせるだけじゃなくて拡大率を100%に戻す処理を入れてみた。
これをあなたのVBEに貼り付けてあげると動くようになります。

左ペインの[ブック名]-[Microsoft Excel Objects]-[ThisWorkbook]で開いた画面に
貼ってください(画像参照)

多分バージョン依存はしないと思います。
自分はExcel2013を使用しています。

一つひとつ見ていきましょう

For Each objSheet In ThisWorkbook.Worksheets
なんかの処理
Next

For Eachは見ての通りループします。
ThisWorkbook.WorkSheetsでブック内のワークシートを順繰りに見ていきます。
その一回一回で扱うワークシートのオブジェクトをobjSheetという変数で定義しましょう。
という意味です。

objSheet.Activate

n枚目のワークシートをアクティベート(選択状態に)します。

objSheet.Cells(1, 1).Select

n枚目のワークシートのA1セルにカーソルを合わせます。

ActiveWindow.Zoom = 100

アクティベートしている画面の拡大率を100%にします。
(=n枚目のワークシートの拡大率を100%にする)

ThisWorkbook.Worksheets(1).Activate
1枚目のシートをアクティベート(選択状態に)します。

ActiveWorkbook.Save

アクティブなワークブックを保存します。
(=このマクロを実行しているファイルを保存します。)

と、こんな感じになります。

処理をまとめる

1枚目のワークシートのA1セルを選択状態にする
1枚目のワークシートの拡大率を100%にする
2枚目の(以下略)
3枚目の(以下略)
・・・(ワークシートの数繰り返す)
1枚目のシートを選択状態にする
保存する

という流れを実現したのが先ほどのコードです。

VBAに関してはOffice TANAKAという神のようなサイトがあるので
学習コスト自体は低いと思います。
http://officetanaka.net/excel/vba/

やりたいことを細分化して、都度調べていきながらやればある程度こなせるようになります。

さいごに

この記事を面白いまたは役に立ったと思ってくれた方は是非私のTwitter(@kojimanotech)を
フォローしてくれたらうれしいです!

以上、コジマでした。


エンジニア全般カテゴリの最新記事