非表示にできる< 目次 >
本記事で出来ること
本記事では以下のことが分かります。
-分かること-
VBAでEXCELワークシートを制御する方法
ワークシート制御を簡単なコードから理解
さっそくですが、ワークシート操作について、
「Range(“A1”).value = “おはよう”」で説明します。
実は、
「Range(“A1”).value = “おはよう”」は
VBAの自動判別機能により、
「ActiveSheet.Range(“A1”).Value = “おはよう”」
と解釈され、コードが実行されています。
ActiveSheet って何?となりますが、
現在アクティブなEXCELシート という意味になります。
このActiveSheetの箇所を
「Worksheets(“シート名”) 」で置き換えてあげれば、
自在にEXCELシートを行き来したデータのやり取りが可能となります。
例えば、このような感じです。
1 |
Worksheets("Sheet1").Range("A1").Value = "おはよう" |
当然 シート名がSheet2 だった場合は、以下の通りです。
1 |
Worksheets("Sheet2").Range("A1").Value = "おはよう" |
ワークシート自体の制御方法(追加・削除など)
EXCELのワークシートの操作も可能です。
例えば、シートの追加・シートの削除です。
使用例は、↓の「例」に記載してますので、自分が使う際は参考にして下さい。
操作内容 | コード | 属性 | 例 | 例の意味 |
選択 | Select | メソッド(SV型) | - | - |
選択 | Activate | メソッド(SV型) | - | - |
名前変更 | Name | プロパティ | Worksheets("Sheet1").Name = "新シート名" | Sheet1を"新シート名"にする |
削除 | Delete | メソッド(SV型) | Worksheets("Sheet1").Delete | Sheet1を削除 |
追加
|
Add
|
メソッド(SV型) | Worksheets.Add | 先頭にシートを追加 |
メソッド(SVO型) | Worksheets.Add Before:=Sheets("シート名") | "シート名"の前に追加 | ||
メソッド(SVO型) | Worksheets.Add After:=Sheets("シート名") | "シート名"の後ろに追加 | ||
移動
|
Move
|
メソッド(SVO型) | Worksheets.Move Before:=Sheets("シート名") | "シート名"の前に移動 |
メソッド(SVO型) | Worksheets.Move After:=Sheets("シート名") | "シート名"の後ろに移動 | ||
コピー
|
Copy
|
メソッド(SVO型) | Worksheets.Copy Before:=Sheets("シート名") | "シート名"の前にコピー |
メソッド(SVO型) | Worksheets.Copy After:=Sheets("シート名") | "シート名"の後ろにコピー |
補足:シートを削除(Delete)する場合の警告を出さない方法
手作業でシート削除する際、エラーアラートが出ると思います。
VBAでシートを削除する際も同様で、エラーアラートが発生します。
エラーアラートの発生都度、
自動化した作業が止まってしまうのは本意ではないため、
エラーアラートが発生しない設定をコード内に埋め込みます。
<対象コード>
1 2 3 4 5 6 7 8 9 10 |
<対象コード> Sub macro1() '最初、削除の警告を出さないようにする Application.DisplayAlerts = False ~実行VBAコード~ '最後、削除時のエラーアラートが出るように戻しておく Application.DisplayAlerts = True End Sub |
Application.DisplayAlerts は、
EXCELというアプリケーションの画面警告 という意味で、
Falseは「無効化」、Trueは「有効化」となります。
プロパティ構文(※1)の考え方で十分理解できますね。
※1:左辺を右辺の状態にする。
実際の使用例を紹介します。
この方法はそのままマネることをお勧めします。
(偉大なる先日たちの置き土産です)
<実例>
1 2 3 4 5 6 7 8 9 10 11 12 |
Sub Macro1() '削除時のエラーアラートを出さないようにする Application.DisplayAlerts = False 'Sheet1を削除 Worksheets("Sheet1").Delete '削除時のエラーアラートが出るように戻しておく Application.DisplayAlerts = True End Sub |
なぜ最後に「エラーアラートが出るように戻しておく」のかというと、
手作業のEXCEL操作時も設定は有効になっているからになります。
エラーアラートが無効なままにしておくと、
手作業で誤クリックした際、直接 削除されてしまい危険ですので
エラーアラートを有効にすることを忘れないように注意しましょう。
補足:Cells/Rangeの理解が曖昧な人向け
これまでの説明で、
RangeやCellsはEXCELのセルを特定する構文となり
VBAにおいて最重要-理解すべき基本知識の1つです。
曖昧に理解している人はいませんでしょうか?
以下の記事に RangeやCellsの解説をしているので、
不安に思われた方は リンク先で確認して下さいませ。
(早い人は 5分で読めると思います。)
不安に思われた方は リンク先で確認して下さいませ。
(早い人は 5分で読めると思います。)
確認後に、再度 本投稿を読んでもらえれば、腑に落ちると思います。
終わりに
いかがでしたでしょうか。
トライ&エラーを重ねて プログラムは理解が深まっていくので、
積極的に挑戦し理解を深めていきましょう。
こちらは宣伝になりますが、
もしVBA全般のルール・ 基本知識を身に付けたい方がいらっしゃいましたら、
本ブログでは「1週間で分かるVBA 」 なる記事もご紹介していますので、
一度 覗いてみてくれると幸いです。(当然、無料です。)
もしVBA全般のルール・
本ブログでは「1週間で分かるVBA 」 なる記事もご紹介していますので、
一度 覗いてみてくれると幸いです。(当然、無料です。)