初級脱出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 ・・・新着記事一覧を見る
TRIMRANGE関数(セル範囲をトリム:端の空白セルを除外)|エクセル入門(2024-08-30)
正規表現関数(REGEXTEST,REGEXREPLACE,REGEXEXTRACT)|エクセル入門(2024-07-02)
エクセルが起動しない、Excelが立ち上がらない|エクセル雑感(2024-04-11)
ブール型(Boolean)のis変数・フラグについて|VBA技術解説(2024-04-05)
テキストの内容によって図形を削除する|VBA技術解説(2024-04-02)
ExcelマクロVBA入門目次|エクセルの神髄(2024-03-20)
VBA10大躓きポイント(初心者が躓きやすいポイント)|VBA技術解説(2024-03-05)
テンキーのスクリーンキーボード作成|ユーザーフォーム入門(2024-02-26)
無効な前方参照か、コンパイルされていない種類への参照です。|エクセル雑感(2024-02-17)
初級脱出10問パック|VBA練習問題(2024-01-24)
アクセスランキング ・・・ ランキング一覧を見る
1.最終行の取得(End,Rows.Count)|VBA入門
2.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
3.変数宣言のDimとデータ型|VBA入門
4.RangeとCellsの使い方|VBA入門
5.繰り返し処理(For Next)|VBA入門
6.ブックを閉じる・保存(Close,Save,SaveAs)|VBA入門
7.メッセージボックス(MsgBox関数)|VBA入門
8.セルのクリア(Clear,ClearContents)|VBA入門
9.条件分岐(Select Case)|VBA入門
10.ブック・シートの選択(Select,Activate)|VBA入門
- ホーム
- マクロVBA入門編
- マクロVBA練習問題解答
- 初級脱出10問パック解答
このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。