-
引数
プロシージャから別のプロシージャを呼び出すとき、呼び出し先のプロシージャに「計算や処理の元となる値」を渡すことができる仕組み
・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
-