Excel VBA | 中級・上級 VBA 総合セット(100問)

VBA
スポンサーリンク

VBA シート・ブック操作 練習問題(10問)+ 解答解説

ここでは シートやブックの操作 をテーマにした中級~上級者向け演習問題を 10 問用意し、模範コードと解説を添えています。
「複数シートの処理」「ブックの操作」「シートの追加・削除」など、実務でよく使うテクニックを整理しました。


Q1. 全シートの A1 に「更新日: 今日の日付」を書き込め

解答例

Sub UpdateAllSheets()
    Dim ws As Worksheet
    For Each ws In ThisWorkbook.Worksheets
        ws.Range("A1").Value = "更新日: " & Format(Date, "yyyy/mm/dd")
    Next ws
End Sub
VB

解説:
ThisWorkbook.Worksheets を For Each で回すと、全シートに一括処理できる。


Q2. 新しいシートを追加し、既存シートのデータをコピーせよ

解答例

Sub CopyToNewSheet()
    Dim wsNew As Worksheet
    Set wsNew = ThisWorkbook.Worksheets.Add
    
    ThisWorkbook.Sheets("Sheet1").Range("A1:C20").Copy wsNew.Range("A1")
End Sub
VB

解説:
Worksheets.Add で新しいシートを作成し、Copy でデータを貼り付け。


Q3. 複数ブックを開いて、指定シートのデータを統合せよ

解答例

Sub ConsolidateBooks()
    Dim wb As Workbook, ws As Worksheet
    Dim fDialog As FileDialog, fPath As Variant
    
    Set fDialog = Application.FileDialog(msoFileDialogFilePicker)
    fDialog.AllowMultiSelect = True
    
    If fDialog.Show = -1 Then
        For Each fPath In fDialog.SelectedItems
            Set wb = Workbooks.Open(fPath)
            Set ws = wb.Sheets("Data")
            
            ws.Range("A1:C20").Copy ThisWorkbook.Sheets("Summary").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
            
            wb.Close False
        Next fPath
    End If
End Sub
VB

解説:
複数ファイルを選択 → 開く → データコピー → 統合シートに貼り付け。


Q4. シートを名前で検索し、存在しなければ追加せよ

解答例

Sub EnsureSheetExists()
    Dim ws As Worksheet, found As Boolean
    found = False
    
    For Each ws In ThisWorkbook.Worksheets
        If ws.Name = "Report" Then found = True
    Next ws
    
    If Not found Then ThisWorkbook.Worksheets.Add.Name = "Report"
End Sub
VB

解説:
シート存在チェック → なければ追加。実務でよく使うパターン。


Q5. シートを削除するコードを書け(確認メッセージなし)

解答例

Sub DeleteSheet()
    Application.DisplayAlerts = False
    ThisWorkbook.Sheets("Temp").Delete
    Application.DisplayAlerts = True
End Sub
VB

解説:
DisplayAlerts = False で削除確認をスキップできる。


Q6. シートをコピーして新しいブックを作成せよ

解答例

Sub CopySheetToNewBook()
    ThisWorkbook.Sheets("Data").Copy
    ' コピーされたシートが新しいブックとして開く
End Sub
VB

解説:
Copy を単独で使うと、新しいブックにシートがコピーされる。


Q7. ブックを保存するコードを書け

解答例

Sub SaveBook()
    ThisWorkbook.SaveAs Filename:="C:\Users\Public\Report.xlsx", FileFormat:=xlOpenXMLWorkbook
End Sub
VB

解説:
SaveAs で保存場所と形式を指定できる。


Q8. 開いているすべてのブックを閉じるコードを書け

解答例

Sub CloseAllBooks()
    Dim wb As Workbook
    For Each wb In Application.Workbooks
        If wb.Name <> ThisWorkbook.Name Then wb.Close SaveChanges:=False
    Next wb
End Sub
VB

解説:
Application.Workbooks をループして閉じる。自分自身は除外。


Q9. シートを並べ替えるコードを書け

解答例

Sub ReorderSheets()
    ThisWorkbook.Sheets("Report").Move Before:=ThisWorkbook.Sheets(1)
End Sub
VB

解説:
Move メソッドでシートの順序を変更できる。


Q10. シートの保護を設定し、解除するコードを書け

解答例

Sub ProtectSheet()
    ThisWorkbook.Sheets("Data").Protect Password:="1234"
End Sub

Sub UnprotectSheet()
    ThisWorkbook.Sheets("Data").Unprotect Password:="1234"
End Sub
VB

解説:
Protect / Unprotect でシートの編集制限を制御できる。


✅ 総まとめ

  • Worksheets.Add / Delete / Copy / Move → シートの追加・削除・コピー・並べ替え
  • Workbook.Open / SaveAs / Close → ブック操作
  • DisplayAlerts → 確認メッセージ制御
  • Protect / Unprotect → セキュリティ制御
VBA
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました