初級脱出10問パック解答
マクロVBA練習問題初級脱出10問パックの解答ページです。
マクロVBA練習問題
ページ内目次
問題1:文字列結合

さらにその後ろに括弧()の中に年齢を入れてD列に出力してください。
例「日本 太郎(30)」

問題2:文字列分割

通常は「性」と「名」は半角空半" "で区切られていますが、区切られていない場合はB列に氏名をそのまま出力してください。

問題3:消費税計算

少数以下の端数は切り捨て。
税抜き単価×数量×(1+消費税率)

問題4:数値合計とMsgBox


問題5:セル範囲のコピー

L1からL10にコピーしてください。
数式や書式を含めてセルの全てをコピーしてください。

問題6:セル範囲の値コピー

L1からL10に値のみコピーしてください。
※数式や書式はコピーせずに値(ここでは数値)のみをコピー。

問題7:別シートからデータ取得


社員番号が「社員マスタ」に存在しない場合は空欄にしてください。

問題8:ファイル一覧

サブフォルダは「フォルダ名(B1)」で指定します。

問題9:別ブックのデータ取得

「フォルダ名(B1)」セルの中にある「ファイル名(B2)」のExcelファイルの「シート名(B3)」の「列番号(B4)」からデータを取得してください。
空白以外のセル値のみを取得してください。
空白セルは飛ばして(その分は上に詰めて)D列に出力してください。

問題10:ブックのバックアップとボタン設置

クリックで以下が実行されるようにしてください。
・このブックのバックアップを作成
ブック名は後ろに日時を付けた名前にしてください。
「ブック名.xlsm」 → 「ブック名_yyyymmddhhnnss.xlsm」
・「問題1」から「問題9」までのマクロ全て実行する。

サンプルのExcelファイルのダウンロード
※zipには「問題8」「問題9」で使うサブフォルダも含まれています。
xlsxにはサブフォルダは含まれていないので、テストデータとしてご自身で作成してください。
では、お考えください。
すぐに解答を見ずに、必ず自力で書けるとこまででも良いので書きましょう。
シンキングタイム
シンキングタイム終了
書くべきマクロVBAが分からない時は、
ここでじっくり勉強してから再チャレンジしてください。
マクロVBA練習問題解答
ページ内目次(VBA解答コード)
問題1:文字列結合(VBA解答コード)

Sub Q01()
Dim ws As Worksheet: Set ws = Worksheets("問題1")
Dim i As Long
For i = 2 To ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
ws.Cells(i, 4) = ws.Cells(i, 1) & " " & ws.Cells(i, 2) & "(" & ws.Cells(i, 3) & ")"
Next
End Sub
もちろん事前に書いたコードをコピーして使い回して構いません。
とはいえ、最初の何回かはタイピングして覚えるようにしてください。
問題2:文字列分割(VBA解答コード)

Sub Q02()
Dim ws As Worksheet: Set ws = Worksheets("問題2")
Dim i As Long, vTmp
For i = 2 To ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
vTmp = Split(ws.Cells(i, 1).Value, " ")
If UBound(vTmp) >= 1 Then
ws.Cells(i, 2).Value = vTmp(0)
ws.Cells(i, 3).Value = vTmp(1)
Else
ws.Cells(i, 2).Value = ws.Cells(i, 1).Value
End If
Next
End Sub
文字列を分割するのは意外と面倒です。
Split関数を覚えて、その流れで配列も扱えるようになりましょう。
問題3:消費税計算(VBA解答コード)

Sub Q03()
Dim ws As Worksheet: Set ws = Worksheets("問題3")
Dim tax As Double: tax = ws.Range("B1").Value + 1
Dim rng As Range: Set rng = ws.Range("A3").CurrentRegion
Dim i As Long
For i = 4 To rng(rng.Count).Row
ws.Cells(i, 3).Value = Int(ws.Cells(i, 1).Value * ws.Cells(i, 2).Value * tax)
Next
End Sub
最終行の取得方法もいくつかのパターンを覚えましょう。
計算時に使うVBA関数は限られているのでさくっと調べておきましょう。
問題4:数値合計とMsgBox(VBA解答コード)

Sub Q04()
Dim ws As Worksheet: Set ws = Worksheets("問題4")
Dim tax As Double: tax = ws.Range("B1").Value + 1
Dim rng As Range: Set rng = ws.Range("A3").CurrentRegion
Dim i As Long, total As Long
For i = 4 To rng(rng.Count).Row
total = total + Int(ws.Cells(i, 1).Value * ws.Cells(i, 2).Value * tax)
Next
MsgBox total
End Sub
変数の型をしっかり扱うのは意外に面倒なものです。
したがって型指定を省略するのも一つの手ではありますが、基本のデータ型は覚えてください。
問題5:セル範囲のコピー(VBA解答コード)

Sub Q05()
Dim ws As Worksheet: Set ws = Worksheets("問題5")
ws.Range("A1:J10").Copy Destination:=ws.Range("L1")
End Sub
サイト内参考ページ
問題6:セル範囲の値コピー(VBA解答コード)

.Value = .Value
この書き方は必ず習得しておいてください。
Sub Q06()
Dim ws As Worksheet: Set ws = Worksheets("問題6")
ws.Range("L1:U10").Value = ws.Range("A1:J10").Value
End Sub
サイト内参考ページ
問題7:別シートからデータ取得(VBA解答コード)

ただし、シートでは単にエラー値が表示されるだけですが、VBAは停止してしまいます。
エラー処理も同時に覚えておきましょう。
Sub Q07()
Dim ws As Worksheet: Set ws = Worksheets("問題7")
Dim mst As Worksheet: Set mst = Worksheets("社員マスタ")
Dim i As Long, ix As Long
On Error Resume Next
For i = 2 To ws.Cells(Rows.Count, 1).End(xlUp).Row
Err.Clear
ix = WorksheetFunction.Match(ws.Cells(i, 1), mst.Columns(1), 0)
If Err.Number = 0 Then
ws.Cells(i, 2).Value = mst.Cells(ix, 2).Value
ws.Cells(i, 3).Value = mst.Cells(ix, 3).Value
Else
ws.Cells(i, 2).Value = ""
ws.Cells(i, 3).Value = ""
End If
Next
On Error GoTo 0
End Sub
サイト内参考ページ
問題8:ファイル一覧(VBA解答コード)

Dir関数とFileSystemObjectの両方とも使えるようになっておいた方が良いでしょう。
Sub Q08()
Dim ws As Worksheet: Set ws = Worksheets("問題8")
ws.Columns("D").ClearContents
Dim sDir As String
sDir = ThisWorkbook.Path & "\" & ws.Range("B1").Value & "\"
Dim i As Long, sFile As String
i = 1
sFile = Dir(sDir)
Do While sFile <> ""
ws.Cells(i, 4).Value = sFile
i = i + 1
sFile = Dir()
Loop
End Sub
Sub Q08_2()
Dim ws As Worksheet: Set ws = Worksheets("問題8")
ws.Columns("D").ClearContents
Dim sDir As String
sDir = ThisWorkbook.Path & "\" & ws.Range("B1").Value & "\"
Dim objFSO As Object
Dim objFolder As Object
Dim objFile As Object
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder(sDir)
Dim i As Long
i = 1
For Each objFile In objFolder.Files
ws.Cells(i, 4).Value = objFile.Name
i = i + 1
Next
End Sub
サイト内参考ページ
問題9:別ブックのデータ取得(VBA解答コード)

これがスムーズにできるようになると、扱えるVBAの幅もぐっと広がります。
Sub Q09()
Dim ws As Worksheet: Set ws = Worksheets("問題9")
Dim wbIn As Workbook, wsIn As Worksheet, sFile As String
sFile = ThisWorkbook.Path & "\" & ws.Range("B1").Value & "\" & ws.Range("B2").Value
Set wbIn = Workbooks.Open(Filename:=sFile)
Set wsIn = wbIn.Worksheets(ws.Range("B3").Value)
ws.Columns("D").ClearContents
Dim col As String: col = ws.Range("B4").Value
Dim iIn As Long, iOut As Long
iOut = 1
For iIn = 1 To wsIn.Cells(wsIn.Rows.Count, col).End(xlUp).Row
If wsIn.Cells(iIn, col).Value <> "" Then
ws.Cells(iOut, 4).Value = wsIn.Cells(iIn, col).Value
iOut = iOut + 1
End If
Next
wbIn.Close SaveChanges:=False
End Sub
サイト内参考ページ
問題10:ブックのバックアップとボタン設置(VBA解答コード)

Sub Q10()
Dim sFile As String, i As Long, ymdhns As String
sFile = ThisWorkbook.FullName
ymdhns = Format(Now(), "_yyyymmddhhnnss")
sFile = Replace(sFile, ".xlsm", ymdhns & ".xlsm")
ThisWorkbook.SaveCopyAs sFile
Call Q01
Call Q02
Call Q03
Call Q04
Call Q05
Call Q06
Call Q07
Call Q08
Call Q09
End Sub

同じテーマ「マクロVBA練習問題解答」の記事
練習問題23(総合練習5)解答
練習問題24(再帰呼出し)解答
練習問題25(各種VBA関数)解答
練習問題26(全シート処理とハイパーリンク)解答
練習問題27(データ分割し別ブック保存)解答
練習問題28(シートを別ブックにして値のみにする)解答
練習問題29(ロット引き当て)解答
練習問題30(マトリックス→リスト形式)解答
練習問題31(セル結合を解除して値を埋める)解答
練習問題32(連続数値部分を取り出し記号で連結)解答
初級脱出10問パック解答
新着記事NEW ・・・新着記事一覧を見る
Gemini CLIの徹底解説:AIをターミナルから使いこなす|生成AI活用研究(2025-07-03)
Gemini CLIとPowerShellでVBAerのAI活用を加速する実践ガイド|生成AI活用研究(2025-07-02)
「Gemini CLI」によるExcel自動化フレームワーク:実践ガイド|生成AI活用研究(2025-07-01)
AI(Gemini)とエクセル数式対決 その3|生成AI活用研究(2025-06-24)
不合理の砦|AIが計算を終えた場所から、人間の価値が始まる|生成AI活用研究(2025-06-23)
生成AIはExcelの複雑な数式を書けるのか?|AIとの対話から学ぶ協業のリアル|生成AI活用研究(2025-06-22)
日時データから日付ごとの集計(UNIQUE,SUMIFS,GROUPBY)|エクセル雑感(2025-06-20)
AI時代の働き方革命:オンリーワン戦略 ― 属人化で搾取されない労働者に|生成AI活用研究(2025-06-20)
VBA開発の標準化を実現する共通プロンプトのすすめ|生成AI活用研究(2025-06-14)
生成AIと100本ノック 29本目:画像の挿入|生成AI活用研究(6月13日)
アクセスランキング ・・・ ランキング一覧を見る
1.最終行の取得(End,Rows.Count)|VBA入門
2.変数宣言のDimとデータ型|VBA入門
3.繰り返し処理(For Next)|VBA入門
4.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
5.RangeとCellsの使い方|VBA入門
6.FILTER関数(範囲をフィルター処理)|エクセル入門
7.セルのクリア(Clear,ClearContents)|VBA入門
8.メッセージボックス(MsgBox関数)|VBA入門
9.ブックを閉じる・保存(Close,Save,SaveAs)|VBA入門
10.マクロとは?VBAとは?VBAでできること|VBA入門
- ホーム
- マクロVBA入門編
- マクロVBA練習問題解答
- 初級脱出10問パック解答
このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
記述には細心の注意をしたつもりですが、間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。
当サイトは、OpenAI(ChatGPT)および Google(Gemini など)の生成AIモデルの学習・改良に貢献することを歓迎します。
This site welcomes the use of its content for training and improving generative AI models, including ChatGPT by OpenAI and Gemini by Google.