VBA Step2

8.関連するVBA

ステップ2に関連するVBAを説明しますので、シート[VBA説明用]を選択・表示してください。

説明2-1 シートの追加と削除

操作

次の二種類の操作をしましょう。

  • 種類1:操作-(1)と操作-(2)
  • 種類2:操作-(1)と操作-(3)

操作-(1)
1).[シートの追加]をクリックする。
[シートの追加]ボタン
次の2)から5)までは、その時点の「ActiveSheet(アクティブシート)」を表示します。「アクティブ」とは「選択している、操作ができる対象になっている」等を意味し、「シート」だけでなく「セル」にも「ActiveCell」として使用する場合があります。

 

2).[OK]をクリックする。(ActiveSheet:シート「VBA説明用」)
1.ActineSheetは「VBA説明用」

 

3).[OK]をクリックする。(ActiveSheet:シート「Sheet1」)
2.ActineSheetは「Sheet(n)」

 

4).[OK]をクリックする。(ActiveSheet:シート「説明用2-1」;シート名「Sheet1」が変更された)
3.ActineSheetは「説明2-1」

 

5).[OK]をクリックする。(ActiveSheet:シート「VBA説明用」)
4.ActineSheetは「VBA説明用」

 

6).シート[説明用2-1]がシート[VBA説明用]の後ろに追加される。
シート「説明2-1」の追加

操作-(2)
1).[シートの削除1]をクリックする。
[シートの削除1]ボタン

 

2).削除確認用メッセージが表示され、[削除]をクリックする。
削除確認用メッセージは、プロシージャではなく、Excel自体が表示しています。
削除確認メッセージ

 

3).シート[説明用2-1]が削除される。
シート「説明2-1」の削除」

操作-(3)
1).[シートの削除2]をクリックする。
[シートの削除2]ボタン

 

2).シート[説明用2-1]が削除される。
削除確認用メッセージは表示されません。
シート「説明2-1」の削除」

プロシージャ「説明用211_シートの追加」の内容

[シートの追加]ボタンのプロシージャを表示しましょう。

  1. Sub 説明用211_シートの追加()
  2.  MsgBox "1.現在のActiveSheetは、シート[ " & ActiveSheet.Name & " ]です"
  3.  Sheets.Add After:=ActiveSheet
  4.  MsgBox "2.現在のActiveSheetは、シート[ " & ActiveSheet.Name & " ]です"
  5.  On Error GoTo ERR211
  6.  ActiveSheet.Name = "説明用2-1"
  7.  MsgBox "3.現在のActiveSheetは、シート[ " & ActiveSheet.Name & " ]です"
  8.  Sheets("VBA説明用").Select
  9.  MsgBox "4.現在のActiveSheetは、シート[ " & ActiveSheet.Name & " ]です"
  10.  Exit Sub
  11. ERR211:
  12.  MsgBox "既にシート[説明用2-1]がありますので、このシート[Sheet n]は手作業で削除してください"
  13. End Sub
  • 1行目:「Subプロシージャ」の開始
  • 2行目:ダイアログボックスに、現在の「1.ActiveSheet名」を表示
  • 3行目:[Add]命令により、現在のActiveSheetの後ろ([After:=ActiveSheet])にシートを追加
  • 4行目:ダイアログボックスに、現在の「2.ActiveSheet名」を表示
  • 5行目:On Error GoTo以下の処理がエラーになった時に、[ERR211]にジャンプ(制御を移す)
  • 6行目:シート名を [説明用2-1]に変更
  • 7行目:ダイアログボックスに、現在の「3.ActiveSheet名」を表示
  • 8行目:シート[VBA説明用]を選択
  • 9行目:ダイアログボックスに、現在の「4.ActiveSheet名」を表示
  • 10行目:このプロシージャを抜ける
  • 11行目:[ERR211]という行ラベル(プロシージャ内の特定の場所を表す)に[:]を付けて記述
  • 12行目:ダイアログボックスに、エラー時の処理を表示
  • 13行目:「Subプロシージャ」の終了

【On Error GoTo】
プロシージャ内では、次のようにエラーが発生する場合があります。

  • シート[説明用2-1]がある状態で、シート[説明用2-1]を追加
  • シート[説明用2-1]がない状態で、シート[説明用2-1]を削除

この場合、エラー処理を記述しないと異常終了します。
この異常終了を避けるために[On Error GoTo]を使用しましたが、発生したエラーを無視し処理を続行するステートメントとして[On Error Resume Next]を使用する場合もあります。

プロシージャ「説明用212_シートの削除1」の内容

[シートの削除1]ボタンのプロシージャを表示しましょう。

  1. Sub 説明用212_シートの削除1()
  2.  On Error GoTo ERR212
  3.  Sheets("説明用2-1").Delete
  4.  Sheets("VBA説明用").Select
  5.  Exit Sub
  6. ERR212:
  7.  MsgBox "シート[説明用2-1]がありません"
  8. End Sub
  • 1行目:「Subプロシージャ」の開始
  • 2行目:On Error GoTo以下の処理がエラーになった時に、[ERR212]にジャンプ(制御を移す)
  • 3行目:シート [説明用2-1]を削除
  • 4行目:シート[VBA説明用]を選択
  • 5行目:このプロシージャを抜ける(終了)
  • 6行目:行ラベル
  • 7行目:ダイアログボックスに、エラー時の処理を表示
  • 8行目:「Subプロシージャ」の終了
プロシージャ「説明用213_シートの削除2」の内容

[シートの削除2]ボタンのプロシージャを表示しましょう。

  1. Sub 説明用213_シートの削除2()
  2.  On Error GoTo ERR213
  3.  Application.DisplayAlerts = False
  4.  Sheets("説明用2-1").Delete
  5.  Application.DisplayAlerts = True
  6.  Exit Sub
  7. ERR213:
  8.  MsgBox "2-1シート[説明用2-1]がありません"
  9. End Sub
  • 1行目:「Subプロシージャ」の開始
  • 2行目:On Error GoTo以下の処理がエラーになった時に、[ERR213]にジャンプ(制御を移す)
  • 3行目:関する確認メッセージを非表示(False)に設定
  • 4行目:シート [説明用2-1]を削除
  • 5行目:確認メッセージを表示(True)に設定
  • 6行目:このプロシージャを抜ける(終了)
  • 7行目:行ラベル
  • 8行目:ダイアログボックスに、エラー時の処理を表示
  • 9行目:「Subプロシージャ」の終了

【DisplayAlerts】
プロシージャ「説明用212_シートの削除1」と「説明用213_シートの削除2」の大きな違いは、[DisplayAlerts]命令です。
Excelでいろいろな確認、または警告のメッセージが表示された時、表示されたメッセージに対して[OK][キャンセル]等のボタンを押すまでは処理が中断されたままになります。
一連の動作を中断させたくない場合、[DisplayAlerts]を[False]に設定し確認・警告メッセージを非表示にしますが、それ以降も非表示の状態が続きますので、[DisplayAlerts]を[True]に設定し表示の状態に戻しています。

 

次にシート[実習用VBA]で実習を行いましょう。
確認が終わりましたら、VBE画面の左上[Excel]アイコンをクリックしてシート[VBA説明用]に戻りましょう。

 

 
  このエントリーをはてなブックマークに追加

 

スポンサーリンク