VBAスタンダード

テスト

Nariki 2022年11月26日 カード88 いいね2

ビューア設定

[Enter]で回答、[Shift + Enter]で改行します。キーボードショートカットテスト結果は全て回答すると保存されます。

VBAスタンダード
  • 引数
    プロシージャから別のプロシージャを呼び出すとき、呼び出し先のプロシージャに「計算や処理の元となる値」を渡すことができる仕組み

    ・Sub プロシージャ名 A As Long(引数)
     →長整数型の引数Aを引き取る
    ・Function A As String(引数)
     →文字列型の引数Aを引き取る
  • ByRef
    参照渡し(初期値)
  • ByVal
    値渡し(By Valueの略)
  • 配列
    複数の値を同時に格納できる変数
  • 動的配列
    Dim A() As String のように宣言時に要素数を指定しない配列

    動的配列の宣言後、配列を宣言する時は
    Dim A() As String のあとに
    Redim A(要素数)という命令を書く
  • Split
    配列を返す関数(Variant型で返す)
    Split(元の文字列,区切り文字)
    Split(”A-B-C”,"-")
  • UBound
    配列の上限を返す
    UBound(配列)

    Dim A As Variant,i As Long
    Split(”A-B-C”,"-")
    For i= 0 To UBound(A)
  • LBound
    配列の下限を返す
    LBound(配列)


    Dim A As Variant,i As Long
    Split(”A-B-C”,"-")
    For i= LBound(A) To UBound(A)
  • Preserve
    ReDimで消えてしまう値を消さないで要素数を変更するキーワード

    ReDim Preserve A(2) のように使う
  • Set
    オブジェクト名にオブジェクトを格納する時に使う命令

    Set 変数名 =オブジェクト
    例えば、オブジェクト変数AにセルA1を格納する時のコード↓
    Dim A As Range
    Set A = Range("A1")
  • Nothing
    オブジェクト変数を破棄する時のキーワード

    Set A = Nothing
  • Exit
    処理を途中で終わらせる命令
    なんの処理を終了させるかは、Exitステートメントの後ろに指定する

    ・Exit Sub
    →Subプロシージャを終了する
     Sub Macro()
    Exit Sub
    End Sub

    ・Exit Function
    →Functionプロシージャを終了する
     Function Macro()
    Exit Function
    End Function

    ・Exit For
    →For...Nextステートメントを終了する
     Sub Macro()
      For i =1 To 100
    Exit For
    End Sub

    ・Exit Do
    →Do...Loopステートメントを終了する
     Sub Macro()
      Do While i<1000
    Exit Do
    Loop
    End Sub
  • Select Case
    複数の条件を同時に判定する時に使用
    Select Case 値
     Case 条件1
        処理1
     Case 条件2
        処理2
    〔Case Else〕
        その他の処理
    End Select

    ・値を比較対象とするときは Is というキーワードを使う
    ・【1または2または3】
     →Case 1,2,3
  • Do...Loopステートメント
    指定した条件によって処理を繰り返す命令
    【繰り返しの前で条件を判定】
    Do 条件
      処理
    Loop

    【繰り返しの後で条件を判定】
    Do
     処理
    Loop 条件
  • Until
    条件が正しくない間は繰り返す
    Until 条件 と指定

    Until Range("A1").Value<>""
    →セルが空白でない間は繰り返す
  • While
    条件が正しい間は繰り返す
    While 条件 と指定

    While Range("A1").Value⁼""
    →セルが空白の間は繰り返す
  • For Each...Next
    グループのメンバーを一つずつ取り出して操作。
    For Each 変数 In グループ名
     変数を使った操作
    Next 変数

    ・もし存在していたら~にも使える
    For Each wb In Workbooks
    If wb .Name=”合計.xlsx” then
    MsgBox"OK"
    End If
  • Openメソッド
    ブックを開くときのメソッド

    Sub Sample()
    Workbooks.Open "C:¥Work¥営業部_売上.xlsx"
    End Sub
  • SaveAs
    ブックを保存する
  • Format
    日付を加工したいときの関数
    Format(値,書式記号)
    →Format(Now,"yyyymmdd")
    →Format(i,"0000")
  • FileCopy
    ファイルをコピーする
    FileCopy コピー元のファイル名,コピー先のファイル名

    ・コピー先のファイル名は、元のファイルと異なる名前もOK
    ・存在しないフォルダにコピーはNG
    ・既に同名のファイルが存在している場合は勝手に上書きされる
  • MkDir
    フォルダの作成をするメソッド
    MkDir 作成するフォルダ名
  • WorksheetFunction
    ワークシート関数を使う時に書く
    WorksheetFunction.関数名(引数)
  • Sum関数
    足し算の関数
    Range("A6")=WorksheetFunction.Sum(Range("A1:A5")
  • CountIf関数
    特定のデータの件数をカウントする時に使う関数
    Range("A6")=WorksheetFunction.CountIf(Range("A1:A5","佐々木")

    データが存在するかを調べるときにも使える
  • CountSum関数
    特定のデータと同じ行にある数値だけを合計する時に使う関数
    Range("A6")=WorksheetFunction.CountIf(Range("A1:A5","佐々木",Range("B1:B5")

    オートフィルターで使う場合は、見えている範囲だけの計算をする
  • Large関数
    大きい順に見た時に何番目の数値はいくつかを調べる
    Range("A6")=WorksheetFunction.Large(Range("A1:A5","2)

    MAX関数は範囲内の最大値を調べ、引数が一つ
  • Small
    小さい順に見た時に何番目の数値はいくつかを調べる
    Range("A6")=WorksheetFunction.Small(Range("A1:A5","2)

    MIN関数は範囲内の最小値を調べ、引数が一つ
  • Match関数
    検索する文字列が範囲の中で上から何番目か調べる

    Match(Range("A1"),Range("B2:B5"),0)
    MATCH(検査値, 検査範囲, [照合の型])
  • Index関数
    指定した範囲の中で上から何番めか調べる

    Index(Range("B2:B5"),3)
    INDEX(配列, 行番号, [列番号])
  • EoMonth関数
    指定した月の月末の日を調べる

    EoMonth(開始日,月)
  • DataSerial関数
    年月日の数値からExcelが日付と認識できる形式を作成する
    DataSerial(年,月,日)
  • Find
    セルを検索する時に使う

    【完全一致で検索する】
    セル範囲.Find(What:=検索する語句,LookAt:=xlWhole)
    【部分一致で検索する】
    セル範囲.Find(What:=検索する語句,LookAt:=xlPart)
  • xlWhole
    セル検索の時、完全一致で検索する
    セル範囲.Find(What:=検索する語句,LookAt:=xlWhole)
  • xlPart
    セル検索の時、部分一致で検索する
    セル範囲.Find(What:=検索する語句,LookAt:=xlPart)
  • Not
    ~ではない

    If A Is Nothing then
    →もしAがなかったら~
    If Not A Is Nothing then
    →もしAがNothingでなかったら~
  • EntireRow
    そのセルを含む行全体
  • EntireColumn
    そのセルを含む列全体
  • Delete
    行や列を削除する時に使う

    削除する行.Delete
    →EntireRow.Delete
    →EntireColumn.Delete
  • Offset
    見つかったセルを起点として、別のセルを操作する時に使う

    起点セル.Offset(行,列)
  • Resize
    セルの大きさを指定する

    起点セル.Resize(行,列)
  • Copy
    データのコピーをするときに使う

    コピー元のセル範囲.Copy コピー先セル
  • AutoFilter
    表のデータ内で特定のデータを抽出したいときに使用

    表内のセル.AutoFilter 列番号,条件1,記号,条件2
    →Range("A1").AutoFilter 3,"A"
    →Range("A1").AutoFilter 3,"A",XlOr,"B"
  • xlOr
    絞り込みに関する指示を指定
    「または~」
  • xlAnd
    絞り込みに関する指示を指定
    「なお且つ」
  • xlFilterValues
    記号の一つ。値を指定する時に使う
  • CurrentRegion
    ひとかたまりのセル範囲
    セル.CurrentRegion
  • SubTotal
    オートフィルターで絞り込んだ件数は何件あるか調べる
    SubTotal(集計方法,セル範囲)
    →N=WorksheetFunction.SubTotal(3,range("A:A"))
  • Sort
    並び替えの挙動
    ソートする範囲.Sort.引数
  • Key1
    並び替える列にあるセル
  • Order1
    並び順(昇順・降順)
    ・昇順:xlAscending
    ・降順:xlDescending
  • Header
    見出しの有無
    ・見出し有:xlYes
    ・見出し無:xlNo
  • SortOn
    並べ替えのタイプ
    ・セル内のデータで並替:xlSortOnValues
    ・セルの背景色で並替:xlSortOnCellColor
    ・セルの文字色で並替:xlSortOnFontColor
    ・条件付き書式のアイコンで並替:xlSortOnIcon
  • DataOption
    文字列に数字と文字列が混在していた場合の並び替え
    ・数値と文字列を別に並び替え:xlSortNormal
    ・文字列を数値として並び替え:xlSortTextAsNumbers
  • Clearメソッド
    並び替えの条件をクリアする
    .Sort.SortFields.Clear
  • Add2メソッド
    並び替えの条件を設定する
    .Sort.SortFields.Add2 key:=.Range("C1"),Order:=xlAscending
  • Headerプロパティ
    見出しの有無を設定する

    ・Excelが自動判定する:xlGuess
    ・1行目はタイトル行:xlYes
    ・1行目はタイトル行でない:xlNo
    .Sort.Header=xlYes
  • SetRangeメソッド
    ソートする範囲を設定する
    .Sort.SetRange.Range("A:E")
  • Applyメソッド
    .Sort.Apply
  • Phonetic
    ふりがなを表示する
    漢字が入力されているセル.Phonetic.Text

    ※ふりがなを空白にはできない(ふりがなの)消去はできない
  • ListObject
    テーブル内のセルから特定する
    テーブル内のセル.ListObject

    シートからテーブルを特定する
    対象のシート.ListObjects(インデックス)
    →Sheets("Sheet1").ListObjects(1)
    対象のシート.ListObjects(テーブル名)
    →Sheets("Sheet1").ListObjects("テーブル1")
  • Range(テーブルを特定する)
    テーブルには必ず固有の重複しない名前が付けられていることから、テーブル名とRangeを使ってテーブルを指定する

    Range("テーブル1")
  • ListObject.Range
    見出し行を含むテーブル全体
  • ListObject.DataBodyRange
    見出し行を含まないテーブル全体
  • ListObject.HeaderRowRange
    見出し行
  • ListObject.ListColumn
    テーブル内の列(1列のみ)

    全体を表すときはListObject.ListColumns
  • ListObject.ListRow
    テーブル内の行(1行のみ)

    全体を表すときはListObject.ListRows
  • [#All]
    見出し行を含むテーブル全体

    テーブル名[[特殊項目指定子],[列指定子]]
    →Range("テーブル1[#All]")
  • [#Data]
    見出し行を含まないテーブル全体
    Range("テーブル1[#名前")のように、特殊項目指定子を省略して列指定子だけ記述すると[#Data]を指定したものとなる

    テーブル名[[特殊項目指定子],[列指定子]]
    →Range("テーブル1[#Data]")
  • [#Headers]
    見出し行
  • [#Totals]
    集計
  • ListColumns.Add
    列を挿入する
  • ListColumns.Count
    ListColumnsオブジェクト の「Count」プロパティ。列数を取得
  • On Error
    エラーが発生した時にあらかじめ定めた命令に処理をジャンプさせる

    On Error GoTo ジャンプ先のラベル名
     この中でエラーが発生
    ラベル名:
     エラーが発生した場合はここにジャンプする
  • Err.Number
    エラーごとに決まっているエラー番号を返す
  • Err.Description
    エラーごとに決まっているメッセージを返す
  • Resume Next
    発生したエラーを無視する
    OnError Resume Next
  • ProtectStructure
    ブックが保護をされているとTrueを返す
  • StrConv関数
    文字列の半角と全角を変換する
    StrConv(元の文字列,変換する文字種)

    ・半角→全角:VbWide
    ・全角→半角:VbNarrow
    ・文字列を大文字に変換:vbUpperCase
    ・文字列を小文字に変換:vbLowerCase
  • Replace関数
    不要な文字を除去する
    Replace(元の文字列,検索文字,置き換え文字)
  • DataSerial関数
    Excelが日付と認識できるシリアル値に変換する
    DataSerial(年,月,日)
  • ?変数
    関数の結果が表示される。
    この場合、プロシージャを用意しなくても、イミディエイトウィンドウのみで確認
  • F9
    ブレークポイントを設定する
  • Stopステートメント
    マクロが一時停止する
  • F8
    ステップイン(マクロを1行ずつ止めながら実行)
  • TypeName関数
    引数に指定したものがどんな種類のデータか調べる
  • IsNumeric関数
    引数に指定した値が数値か調べる
    数値であればTrue
    数値と認識できなければFalse
  • IsDate関数
    引数に指定した値が日付か調べる
    日付であればTrue
    日付と認識できなければFalse
よく頑張りました
テストスタート
ログイン
オンライン単語帳

このページを利用するにはログインする必要があります。ログインするとAnkilotをより便利にご利用いただけます。