0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

VBA基本

Last updated at Posted at 2024-10-02

はじめに

学習記録・復習のためまとめています。IT業界2年目のひよっこです。

基本

作成したマクロの呼び出し方法

・マクロ上で、他のマクロ(プロシージャ)を呼び出す方法

Callステートメントをしようしてマクロを記述する

例 ※マクロ名の後にかっこは不要!

Call test1
Call test2

・シート上で、ボタンから呼び出す場合
{840D8879-FDE1-48F5-951C-61D85EA0D7A9}.png

1)開発タブ>挿入>ボタン(フォームコントロール)
2)該当のマクロを選択
3)右クリック>テキストの編集から表示名を入力する


シート操作

シートの指定方法

<こんなときに使える>
・複数シートがあり、明確に指定したいとき

'シート名で指定したいとき
Worksheets("シート名").対象セルなど

'シート番号で指定したいとき
Worksheets(シート番号).対象セルなど

・シート名が頻繁に変わる場合は、シート番号で指定した方が修正が少ない
・シート番号はブック内で左から順に附番される(非表示シートも同様に附番される)


シート数を数える

<こんなときに使える>
・シート数を数えたいとき
・シート数の増減があっても、修正不要で汎用的に使いたいとき

Worksheets.Count

ブック内の全てのシート数を数えるため、引数(シートの指定)はない

例 全てのシートに対して繰り返しなにかの処理をしたい場合

Dim i

For i = 1 To Worksheets.count
    処理
Next

シートを削除

<こんなときに使える>
・シートを削除したいとき

Worksheets(対象シート).Delete

セルに値が入っているシートを削除する場合、下記のように「本当に削除してよいか」という警告ウィンドウが表示される。
{2CCCE061-116A-4D69-8016-7AFD54DF1D86}.png
→ここでマクロが止まってしまうため、警告ウィンドウを表示しない設定も可能。

例 値が入っていても、警告ウィンドウを表示せずシートを削除する方法

'警告ウィンドウを非表示
'※Alertsは複数形の「s」になる
Application.displayAlerts = False

Worksheets(対象シート).Delete

'警告ウィンドウを表示 ※必要な場合のみ非表示設定した方がよいため、削除後は表示する設定に戻すことが推奨されている
Application.DisplayAlerts = True

シートをコピー

<こんなときに使える>
・シートをコピーしたいとき
・全シート または、コピーする場所(ブック内)を指定したいとき

'新規のブックにコピーしたい場合
Worksheets(コピーしたい対象シート).Copy

'現在のブックにコピーしたい場合
 '対象シート※よりも「前(左)」に追加したい場合
  Worksheets(コピーしたい対象シート).Copy before:= Worksheets(対象シート※) 
  
 '対象シート※よりも「後ろ(右)」に追加したい場合 
  Worksheets(コピーしたい対象シート).Copy after:= Worksheets(対象シート※) 

・「コピーしたい対象シート」の記載がない場合(Worksheets.Copy)は、全シートがコピーされる
・コピー後のブックやシートが「アクティブ(ブック/シート)」になる
・基本的な文法は、移動(Move)メソッドと同じ

例 テンプレートシートを12ヵ月分コピーして、シート名を「Y月」にしたい場合

    Dim i

    '1月から12月分を繰り返しコピーする
    For i = 1 To 12
        'シートの最後に追加していく
        Worksheets("テンプレート").Copy after:=Worksheets(Worksheets.count)
        
        '変数を使って、最後に追加したシートの名前を変更する
        Worksheets(Worksheets.count).name = i & "月"
    Next

シートを移動

<こんなときに使える>
・シートを移動したいとき
・移動する場所(ブック内)を指定したいとき

'新規のブックに移動したい場合
'※対象シートのみ、新規ブックに移動する
Worksheets(移動したい対象シート).Move

'現在のブックに移動したい場合
 '対象シート※よりも「前(左)」に移動したい場合
  Worksheets(移動したい対象シート).Move before:= Worksheets(対象シート※) 
  
 '対象シート※よりも「後ろ(右)」に移動したい場合 
  Worksheets(移動したい対象シート).Move after:= Worksheets(対象シート※) 

・基本的な文法は、コピー(Copy)メソッドと同じ
・移動後のブックやシートが「アクティブ(ブック/シート)」になる


シートを追加

<こんなときに使える>
・シートを追加したいとき
・追加する場所(ブック内)やシート数を指定したいとき

'追加したい場合
Worksheets.Add

'対象シート※よりも「前(左)」に、2シート追加したい場合
  Worksheets.Add before:= Worksheets(対象シート※),Count := 2 
  
 '対象シート※よりも「後ろ(右)」に、4シート追加したい場合 
  Worksheets.Move after:= Worksheets(対象シート※) ,Count := 4

・新規シートが追加される
・「Worksheets.Add」のみの場合は、アクティブシートの前(左)に追加される
(※忘れやすい場合は、新規シートが「ちょいと前(左)失礼~!」と言いながら割り込んでくるイメージで覚える)

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?