-
引数プロシージャから別のプロシージャを呼び出すとき、呼び出し先のプロシージャに「計算や処理の元となる値」を渡すことができる仕組み
・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) -
PreserveReDimで消えてしまう値を消さないで要素数を変更するキーワード
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.CountListColumnsオブジェクト の「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
ログイン