見出し画像

VBAエキスパート「Excel VBA スタンダード」100本ノック

VBAエキスパート「Excel VBA スタンダード」に合格しました。

スペルを覚えることが大事な試験だと感じました。
私が試験勉強でひたすら覚えた単語100本ノックです!


プロシージャ

1 引数

引数を渡す
Sub プロシージャ名(引数)
Function プロシージャ名(引数)

引数を受け取る
Sub プロシージャ名(A As Long)
Function プロシージャ名(A As Long)
Sub プロシージャ名(A As Long, B As String)  ※複数受け取る

'引数
Sub Sample4()
    Call Sample5(100)
End Sub

Sub Sample5(A As Long)
    MsgBox A
End Sub

2 ByVal(値渡しで変数の値が変わらない)

Sub プロシージャ名(ByVal A As Long)

'ByVal(値渡しで変数の値が変わらない)Aは100のまま
Sub Sample6()
    Dim A As Long
    A = 100
    Call Sample7(A)
    MsgBox A
End Sub

Sub Sample7(ByVal B As Long)
    B = B * 2
End Sub

3 ByRef(参照渡しで変数の値が変わる)

Sub プロシージャ名(ByRef A As Long) ※または省略

'ByRef(参照渡しで変数の値が変わる)Aは200に変わる
Sub Sample6()
    Dim A As Long
    A = 100
    Call Sample7(A)
    MsgBox A
End Sub

Sub Sample7(ByRef B As Long)
    B = B * 2
End Sub

変数

4 配列(複数の値を同時に格納)

Dim 配列変数名(配列要素の上限) ※下限を省略すると0

'配列
Sub Sample2()
    Dim A(2) As String
    A(0) = "佐藤"
    A(1) = "山本"
    A(2) = "菊池"
    MsgBox A(0) & "と" & A(1) & "と" & A(2)
End Sub

5 Split(区切った文字列を各要素に入れた配列を返す)

Split(元の文字列, 区切り文字列)

'Split
Sub Sample3()
    Dim A As Variant
    A = Split("A-B-C", "-")
    MsgBox A(1)
End Sub

6 UBound(配列の上限を返す)

UBound(配列)

'UBound
Sub Sample4()
    Dim A As Variant, i As Long
    A = Split("A-B-C", "-")
    For i = 0 To UBound(A)
        MsgBox A(i)
    Next i
End Sub

7 LBound(配列の下限を返す)

LBound(配列)

'LBound
Sub Sample4()
    Dim A As Variant, i As Long
    A = Split("A-B-C", "-")
    For i = LBound(A) To UBound(A)
        MsgBox A(i)
    Next i
End Sub

8 動的配列(マクロの中で必要に応じて要素数を指定)

Dim 変数名() As String ※宣言時には要素数を指定しない

9 ReDim(後から要素数を指定)

ReDim 変数名()

'ReDim
Sub Sample5()
    Dim A() As String
    ReDim A(2)
    A(2) = "菊池"
    MsgBox A(2)
End Sub

10 Preserve(既存の値を消さないで要素数を変更)

ReDim Preserve 変数名()

'Preserve
Sub Sample6()
    Dim A() As String
    ReDim A(1)
    A(0) = "佐藤"
    A(1) = "山本"
    ReDim Preserve A(2)
    A(2) = "菊池"
    MsgBox A(0)
End Sub

11 Set(オブジェクト変数にオブジェクトを格納する)

Set 変数名 = オブジェクト

'Set
Sub Sample8()
    Dim A As Range
    Set A = Range("A1")
    A.Font.ColorIndex = 3
End Sub

12 Noting(オブジェクト変数を破棄する)

Set 変数名 = Nothing

'Nothing
Sub Sample8()
    Dim A As Range
    Set A = Range("A1")
    A.Font.ColorIndex = 3
    Set A = Nothing
End Sub

ステートメント

13 Exit(処理を途中で終了)

Exit Sub / Exit Funciton
Exit For
Exit Do

'Exit Sub
Sub Sample1()
    Dim i As Long
    For i = 1 To 100
        If Cells(i, 1) = "" Then
            Exit Sub
        End If
    Next i
    MsgBox "終わりました"
End Sub

14 Select Case(複数の条件を同時に判定)

Select Case

'Select Case
Sub Sample4()
    Dim buf As String
    buf = "土曜"
    Select Case buf
        Case "月曜"
            Range("A1").Value = 1
        Case "火曜"
            Range("A1").Value = 2
        Case "水曜", "木曜"
            Range("A1").Value = 3
        Case Else
            Range("A1").Value = 4
    End Select
End Sub

15 Do…Loop(指定した条件によって処理を繰り返す)

繰り返しの前で条件を判定する
Do 条件
 処理
Loop

繰り返しの後で条件を判定する
Do
 処理
Loop 条件

16 Until(条件が正しくない間は繰り返す)

処理を実行する前に判定する
Do Until 条件

'Do Loop(Until)
Sub Sample5()
    Dim 行 As Long, 支払額 As Long
    行 = 5
    Do Until 行 > 6
        支払額 = 支払額 + Cells(行, 2)
        行 = 行 + 1
    Loop
    MsgBox 支払額
End Sub

処理を実行する後に判定する
Loop Until 条件

'Do Loop(Until)
Sub Sample6()
    Dim 行 As Long, 支払額 As Long
    行 = 1
    Do
        支払額 = 支払額 + Cells(行, 2)
        行 = 行 + 1
    Loop Until 行 > 6
    MsgBox 支払額
End Sub

17 While(条件が正しい間は繰り返す)

処理を実行する前に判定する
Do While 条件

'Do Loop(While)
Sub Sample7()
    Dim 行 As Long, 請求額 As Long
    行 = 1
    Do While Cells(行, 1) = "請求"
        請求額 = 請求額 + Cells(行, 2)
        行 = 行 + 1
    Loop
    MsgBox 請求額
End Sub

処理を実行する後に判定する
Loop While 条件

'Do Loop(While)
Sub Sample8()
    Dim 行 As Long, 請求額 As Long
    行 = 1
    Do
        請求額 = 請求額 + Cells(行, 2)
        行 = 行 + 1
    Loop While Cells(行, 1) = "請求"
    MsgBox 請求額
End Sub

18 For Each(グループのメンバーをひとつずつ順番に取り出して操作)

For Each 変数 In グループ名
 変数を使った操作
Next 変数

'For Each
Sub Sample9()
    Dim C As Range
    For Each C In Range("A1:A3")
        C = C * 2
    Next C
End Sub

19 Selection(選択された複数のセル)

'For Each
Sub Sample10()
    Dim C As Range
    For Each C In Selection
        C = C * 2
    Next C
End Sub

20 ネスト

If 条件1 Then
 If 条件2 Then

  処理
End If

'ネスト
Sub Sample11()
    Dim i As Long
    For i = 2 To 20
        If 20 < Cells(i, 2) Then
            If Cells(i, 2) < 70 Then
                Cells(i, 3) = Cells(i, 2) * 2
            End If
        End If
    Next i
End Sub

ファイルの操作

21 ThisWorkbook(現在実行中のマクロが書かれているブック)

'ThisWorkbook
Sub Sample4()
    Dim i As Long
    For i = 1 To 3
        Workbooks.Open _
            "C:\Work" & ThisWorkbook.Sheets("Sheet1").Cells(i, 1) & ".xlsx"
    Next i
End Sub

22 Path(マクロを書いているブックのパス)

ThisWorkbook.Path

'Path
Sub Sample6()
    MsgBox ThisWorkbook.Path
End Sub

23 Name(マクロを書いているブックのファイル名)

ThisWorkbook.Name

'Name
Sub Sample7()
    MsgBox ThisWorkbook.Name
End Sub

24 Open(ブックを開く)

'Open
Sub Sample3()
    Workbooks.Open "C:\Work" & Range("A1") & "_売上.xlsx"
End Sub

25 SaveAs(アクティブブックに名前を付けて保存)

'SaveAs
Sub Sample5()
    ActiveWorkbook.SaveAs "C:\Work" & Year(Now) & "年売上.xlsx"
End Sub

26 ActiveWorkbook(現在表示しているブック)

ActiveWorkbook.SaveAS

27 Format(引数「値」に引数「書式設定」で指定した表示形式を設定したとき、それがどう表示されるかの結果を返す)

Format(値, 書式記号)

'Formt
Sub Sample8()
    ActiveWorkbook.SaveAs "C:\Work" & Format(Now, "yyyymmdd") & ".xlsx"
End Sub

28 FileCopy(ファイルをコピーする)

FileCopy コピー元のファイル名, コピー先のファイル名

'FileCopy
Sub Sample11()
    FileCopy "C:\Work\売上.xlsx", "C:\Work\Sub\売上(2019).xlsx"
End Sub

29 Dir(フォルダー)

Directory(ディレクトリ) = フォルダー

30 MkDir(フォルダーを作成する)

MkDir 作成するフォルダー名

'MkDir
Sub Sample12()
    MkDir "C:\Work\2019"
End Sub

ワークシート関数

31 WorksheetFunction

WorksheetFunction.関数名(引数)

32 Sum(数値を合計)

'Sum
Sub Sample1()
    Range("A6") = WorksheetFunction.Sum(Range("A1:A5"))
End Sub

33 CountIf(特定のデータの件数をカウント)

'CountIf
Sub Sample2()
    With WorksheetFunction
        Range("E1") = .CountIf(Range("A1:A6"), "佐々木")
    End With
End Sub

34 SumIf(特定のデータと同じ行にある数値だけを合計)

'SumIf
Sub Sample3()
    With WorksheetFunction
        Range("E2") = .SumIf(Range("A1:A6"), "佐々木", Range("B1:B6"))
    End With
End Sub

35 Large(複数の数値に対して、大きい順で見たときに何番目の数値はいくつかを調べる)

'Large
Sub Sample4()
    With WorksheetFunction
        Range("D1") = .Large(Range("A2:A6"), 1)
        Range("D2") = .Large(Range("A2:A6"), 2)
        Range("D3") = .Large(Range("A2:A6"), 3)
    End With
End Sub

36 Small(複数の数値に対して、小さい順で見たときに何番目の数値はいくつかを調べる)

'Small
Sub Sample5()
    With WorksheetFunction
        Range("D1") = .Small(Range("A2:A6"), 1)
        Range("D2") = .Small(Range("A2:A6"), 2)
        Range("D3") = .Small(Range("A2:A6"), 3)
    End With
End Sub

37 VLookup(表の左端を検索して、見つかった行の指定した位置を返す)

'VLookup
Sub Sample6()
    Range("E1") = WorksheetFunction.VLookup(Range("D1"), Range("A2:B7"), 2, False)
End Sub

38 Match(検索した文字列が、指定した範囲の中で上から何番目に存在しているかを調べる)

'Match
Sub Sample7()
    Range("E1") = WorksheetFunction.Match(Range("D1"), Range("B2:B7"), 0)
End Sub

39 Index(行と列の番号を指定し、該当するセル番地の値を取り出す)

'Index
Sub Sample8()
    Dim N As Long
    With WorksheetFunction
        N = .Match(Range("D1"), Range("B2:B7"), 0)
        Range("E1") = .Index(Range("A2:A7"), N)
    End With
End Sub

40 EoMonth(指定した月の月末の日を調べる)

'EoMonth
Sub Sample9()
    Range("B1") = WorksheetFunction.EoMonth(Range("A1"), -1)
    Range("B2") = WorksheetFunction.EoMonth(Range("A1"), 0)
    Range("B3") = WorksheetFunction.EoMonth(Range("A1"), 1)
End Sub

セルの検索とオートフィルターの操作

41 Find(指定されたセル範囲内で文字列や数値を検索)

セルの範囲.Find(引数:=)

引数
What 検索する語句を指定 ※必ず指定
After 指定したセルの次のセルから検索
LookIn 値を検索するか、数式を検索するかなど、検索対象を指定
LookAt 完全一致検索をするかどうかを指定 ※指定した方がいい
SearchOrder 検索の方向を指定
SearchDirection 次を検索するか、前を検索するか、検索の向きを指定
MatchCase 大文字と小文字を区別して検索するかどうかを指定
MatchByte 半角文字と全角文字を区別して検索するかどうかを指定
SearchFormat 書式を検索の条件に含めるかどうかを指定

'Find
Sub Sample1()
    Dim A As Range
    Set A = Range("A1:A8").Find(What:="佐々木")
    A.Offset(0, 1) = 100
End Sub

42 xlWhole(完全一致で検索)

セルの範囲.Find(What:=検索する語句, LookAt:=xlWhole)

'xlWhole
Sub Sample2()
    Dim A As Range
    Set A = Range("A1:A8").Find(What:="佐々木", LookAt:=xlWhole)
    A.Offset(0, 1) = 100
End Sub

43 xlPart(部分一致で検索)

セルの範囲.Find(What:=検索する語句, LookAt:=xlPart)

'xlPart
Sub Sample3()
    Dim A As Range
    Set A = Range("A1:A8").Find(What:="佐々木", LookAt:=xlPart)
    A.Offset(0, 1) = 100
End Sub

44 Nothing(セルが見つからなかったら)

If A Is Nothing Then

'Nothing
Sub Sample4()
    Dim A As Range
    Set A = Range("A:A").Find(What:="佐々木", LookAt:=xlWhole)
    If A Is Nothing Then
        MsgBox "見つかりません"
    Else
        A.Offset(0, 1) = 100
    End If
End Sub

45 Not(Nothingではなかったら)

If Not A Is Nothing Then

'Not
Sub Sample5()
    Dim A As Range
    Set A = Range("A:A").Find(What:="佐々木", LookAt:=xlWhole)
    If Not A Is Nothing Then
        MsgBox "見つかりました"
    Else
        MsgBox "見つかりません"
    End If
End Sub

46 EntireRow(セルを含む行全体)

'EntireRow
Sub Sample6()
    Dim A As Range
    Set A = Range("A:A").Find(What:="佐々木", LookAt:=xlWhole)
    If A Is Nothing Then
        MsgBox "見つかりません"
    Else
        A.EntireRow.Delete
    End If
End Sub

47 EntireColumn(セルを含む列全体)

'EntireColumn
Sub Sample7()
    Dim A As Range
    Set A = Range("A:E").Find(What:="佐々木", LookAt:=xlWhole)
    If A Is Nothing Then
        MsgBox "見つかりません"
    Else
        A.EntireColumn.Delete
    End If
End Sub

48 Offset(セルを基点に別のセルを操作)

基点セル.Offset(行, 列)

'Offset
Sub Sample8()
    Dim A As Range
    Set A = Range("A:A").Find(What:="佐々木", LookAt:=xlWhole)
    If A Is Nothing Then
        MsgBox "見つかりません"
    Else
        A.Offset(0, 1) = A.Offset(0, 1) * 10
    End If
End Sub

49 Copy(セルをコピー)

コピー元のセル範囲.Copy コピー先のセル範囲

'Copy
Sub Sample9()
    Dim A As Range
    Set A = Range("A:A").Find(What:="佐々木", LookAt:=xlWhole)
    If A Is Nothing Then
        MsgBox "見つかりません"
    Else
        Range(A, A.End(xlToRight)).Copy Range("E2")
    End If
End Sub

50 Resize(セルの大きさを指定)

'Resize
Sub Sample10()
    Dim A As Range
    Set A = Range("A:A").Find(What:="佐々木", LookAt:=xlWhole)
    If A Is Nothing Then
        MsgBox "見つかりません"
    Else
        A.Resize(1, 3).Copy Range("E2")
    End If
End Sub

51 AutoFilter(表をオートフィルターで絞り込む)

セル.AtuoFilter Feild, Criteria1, Operator, Criteria2
Feild 何列目に条件を指定して絞り込むかの列位置を数値で指定
Criteria1 絞り込みの条件を文字列指定
Operator 絞り込み指示(2つの条件を指定)
Critetia2 2つ目の絞り込みの条件

52 Criteria1(絞り込みの条件を文字列指定)

'AutoFilter
'Criteria1
Sub Sample11()
    Range("A1").AutoFilter Field:=1, Criteria1:="佐々木"
End Sub

53 xlAnd(なおかつ)

'xlAnd
Sub Sample12()
    Range("A1").AutoFilter Field:=3, Criteria1:=">300", Operator:=xlAnd, Criteria2:="<700"
End Sub

54 xlOr(または)

'xlOr
Sub Sample13()
    Range("A1").AutoFilter Field:=1, Criteria1:="佐々木", Operator:=xlOr, Criteria2:="桜井"
End Sub

55 xlFilterValues(複数の条件を配列形式で指定)

'xlFilterValues
Sub Sample14()
    Dim A(2) As String
    A(0) = "佐々木"
    A(1) = "桜井"
    A(2) = "松本"
    Range("A1").AutoFilter Field:=1, Criteria1:=A, Operator:=xlFilterValues
End Sub

56 CurrentRegion(任意のセルを含むひとかたまりのセル範囲)

セル.CurrentRegion

'CurrentRegion
Sub Sample15()
    Range("A1").AutoFilter field:=1, Criteria1:="佐々木"
    Range("A1").CurrentRegion.Copy Sheets("Sheet2").Range("A1")
End Sub

57 Subtotal(絞り込んだ結果をカウント)

Subtotal(集計方法, セル範囲)

'Subtotal
Sub Sample16()
    Dim N As Long
    Range("A1").AutoFilter field:=1, Criteria1:="佐々木"
    N = WorksheetFunction.Subtotal(3, Range("A:A"))
    MsgBox "佐々木は、" & N - 1 & "件あります"
    Range("A1").AutoFilter field:=1
End Sub

データの並べ替え

58 Sort(セルの並べ替え)

簡単な方法(Excel2003まで)
並べ替えるセル範囲.Sort Key1, Order1, Header

59 xlAscending(昇順)

'Sort
'xlAscending
Sub Sample1()
    Range("A1").Sort key1:=Range("D1"), Order1:=xlAscending, Header:=xlYes
End Sub

60 xlDescending(降順)

'xlDescending
Sub Sample2()
    Range("A1").Sort key1:=Range("D1"), Order1:=xlDescending, Header:=xlYes
End Sub

61 xlYes(見出しあり)

'xlYes
Sub Sample3()
    Range("A1").Sort key1:=Range("D1"), Order1:=xlAscending, Header:=xlYes
End Sub

62 xlNo(見出しなし)

'xlNo
Sub Sample4()
    Range("A1").Sort key1:=Range("D1"), Order1:=xlAscending, Header:=xlNo
End Sub

63 SortFields(並べ替えの条件の指定)

ややこしい方法(Excel2007)
sheets("Sheet1").Sort.SortFiels.

'SortFields
Sub Sample5()
    With Sheets("sheet1")
        .Sort.SortFields.Clear
        .Sort.SortFields.Add2 Key:=.Range("D1"), Order:=xlAscending
        .Sort.Header = xlYes
        .Sort.SetRange .Range("A:D")
        .Sort.Apply
    End With
End Sub

64 Clear(並べ替えの条件をクリア)

Sort.SortFiels.Clear

65 Add2(並べ替えの条件を設定)

Sort.SortFields.Add2 Key:=sheets("Sheet1").Range("D1"), Order:=xlAscending

66 Header(見出しの有無を指定)

sheets("Sheet1").Sort.Header = xlYes

67 SetRange(ソートする範囲を設定)

sheets("Sheet1").Sort.SetRange sheets("Sheet1").Range("A:D")

68 Apply(ソートを実行)

sheets("Sheet1").Sort.Apply

69 Phonetic(ふりがなの表示)

'Phonetic
Sub Sample6()
    MsgBox Range("A2").Phonetic.Text
End Sub

70 Text(ふりがなを取得)

'Text
Sub Sample7()
    Range("A2").Phonetic.Text = "アラガキ"
End Sub

テーブルの操作

71 ListObject(テーブルを特定)

テーブルのセルから特定
テーブル内のセル.ListObject

テーブルが存在するシートから特定
対象シート.ListObjects(インデックス)
対象シート.ListObjects(シート名)

72 Range(見出し行含むテーブル全体)

セル.ListObject.Range

セルを指定するときは、範囲の中の何番目と指定
セル.ListObject.Range(2)

'Range
Sub Sample1()
    Range("A1").ListObject.Range(2).Select
End Sub

73 HeaderRowRange(見出し行)

セル.ListObject.HeaderRowRange

'HeaderRowRange
Sub Sample2()
    Range("A1").ListObject.HeaderRowRange(3).Select
End Sub

74 DataBodyRange(見出しを含まないテーブルデータ全体)

セル.ListObject.DataBodyRange

'DataBodyRange
Sub Sample3()
    Range("A1").ListObject.DataBodyRange(2).Select
End Sub

75 ListColumns(列)

セル.ListObJect.ListColumns(列番号).Range

'ListColumns
Sub Sample4()
    Range("A1").ListObject.ListColumns(2).Range.Select
End Sub

76 ListRows(行)

セル.ListObject.ListRows(行番号).Range ※見出しを含めない

'ListRows
Sub Sample5()
    Range("A1").ListObject.ListRows(2).Range.Select
End Sub

77 ListColumns.Add(列を挿入)

セル.ListObJect.ListColumns.Add

'ListClolumns.Add
Sub Sample6()
    Range("A1").ListObject.ListColumns.Add
End Sub

78 ListColumns.Count(列の数)

セル.ListObJect.ListColumns.Count

'ListColumns.Count
Sub Sample7()
    Dim N As Long
    Range("A1").ListObject.ListColumns.Add
    N = Range("A1").ListObject.ListColumns.Count
    Range("A1").ListObject.ListColumns(N).DataBodyRange = "=[@数値]*2"
End Sub

79 [#All](見出し行含むテーブル全体)

Range("テーブル1[#All]")

'[#All]
Sub Sample8()
    Range("テーブル1[#All]").Select
End Sub

80 [#Data](見出しを含まないテーブルデータ全体)

Range("テーブル1[#Data]")

'[#Data]
Sub Sample9()
    Range("テーブル1[#Data]").Select
End Sub

81 [#Headers](見出し行)

Range("テーブル1[#Headers]")

'[#Headers]
Sub Sample10()
    Range("テーブル1[#Headers]").Select
End Sub

82 [列名](列)

Range("テーブル1[列名]")

'[列名]
Sub Sample11()
    Range("テーブル1[名前]").Select
End Sub

エラー対策

83 On Error(エラーが発生したとき)

84 GoTo(エラーが発生したら別の処理にジャンプ)

On Error GoTO ジャンプ先のラベル名

Sub Sample1()
    On Error GoTo Error1
    Sheets(2).Range("A1") = 100
    MsgBox "代入しました"
    Exit Sub
Error1:
    MsgBox "エラーが発生しました"
End Sub

85 Err.Number(エラー番号を返す)

'Err.Number
Sub Sample2()
    On Error GoTo Error1
    Sheets("Sheet3").Name = Range("A1")
    Exit Sub
Error1:
    Select Case Err.Number
    Case 9
        MsgBox "Sheet3が存在しません"
    Case 1004
        MsgBox "同名のシートが存在します"
    Case Else
        MsgBox "想定しないエラーです"
    End Select
End Sub

86 Err.Description(エラーメッセージを返す)

Sub Sample3()
    On Error GoTo Error1
    Sheets("Sheet3").Name = Range("A1")
    Exit Sub
Error1:
    Select Case Err.Description
    Case "インデックスが有効範囲にありません。"
        MsgBox "Sheet3が存在しません"
    Case Else
        MsgBox "想定しないエラーです"
    End Select
End Sub

87 Resume Next(発生したエラーを無視)

On Error Resume Next

'Resume Next
Sub Sample4()
    Dim A As Long
    On Error Resume Next
    A = Rows(1).Find("氏名").Column
    If A > 0 Then
        Cells(2, A).Value = "山田太郎"
    Else
        MsgBox "氏名列がありません"
    End If
End Sub

88 StrConv(文字列を様々な文字種に変換)

StrConv(元の文字列, 変換する文字種)

89 vbUpperCase(大文字に変換)

StrConv(元の文字列, vbUpperCase)

'StrConv
'vbUpperCase
Sub Sample5()
    Dim i As Long
    For i = 1 To 8
        Cells(i, 2) = StrConv(Cells(i, 1), vbUpperCase)
    Next i
End Sub

90 vbLowerCase(小文字に変換)

StrConv(元の文字列, vbLowerCase)

'vbLowerCase
Sub Sample6()
    Dim i As Long
    For i = 1 To 8
        Cells(i, 2) = StrConv(Cells(i, 1), vbLowerCase)
    Next i
End Sub

91 vbWide(全角に変換)

StrConv(元の文字列, vbWide)

'vbWide
Sub Sample7()
    Dim i As Long
    For i = 1 To 8
        Cells(i, 2) = StrConv(Cells(i, 1), vbWide)
    Next i
End Sub

92 vbNarrow(半角に変換)

StrConv(元の文字列, vbNarrow)

'vbNarrow
Sub Sample8()
    Dim i As Long
    For i = 1 To 8
        Cells(i, 2) = StrConv(Cells(i, 1), vbNarrow)
    Next i
End Sub

93 Replace(不要な文字を除去)

Replace(元の文字列, 検索文字, 置換文字)

'Replace
Sub Sample9()
    Dim i As Long
    For i = 1 To 8
        Cells(i, 2) = Replace(Cells(i, 1), "-", "")
    Next i
End Sub

94 DateSrial(日付と認識できるシリアル値に変換)

DateSerial(年, 月, 日)

'DateSerial
Sub Sample10()
    Dim i As Long
    For i = 1 To 8
        Cells(i, 4) = DateSerial(Cells(i, 1), Cells(i, 2), Cells(i, 3))
    Next i
End Sub

デバック

95 ?変数(イミディエイトウィンドウで変数を調べる)

a=100
?a
 100

96 F9(ブレークポイントの位置でマクロを一時停止)

97 Stop(マクロを一時停止するステートメント)

'Stop
Sub Sample3()
    Dim A As Long
    A = 500
    If Range("A1") <> "" Then Stop
    Range("A1") = A
End Sub

98 F8(ステップ実行)

99 TypeName(データの種類を調べる)

'TypeName
Sub Sample4()
    Dim A As Variant
    A = "Excel"
    MsgBox TypeName(A)
End Sub

100 IsNumeric(数値かどうかを判定)

'IsNumeric
Sub Sample5()
    Dim A As Variant
    A = 100
    If IsNumeric(A) = True Then
        MsgBox "数値です"
    Else
        MsgBox "数値ではありません"
    End If
End Sub

この記事が気に入ったらサポートをしてみませんか?