つくる
さがす
ログイン
登録
ゲスト
ログインしていません
ログイン
登録
メニュー
通知
検索
単語帳をつくる
マニュアル
フィードバック
お問い合わせ
開発者を支援
サービス稼働状況
Ankilotについて
ログイン
通知はありません
ホーム
VBAスタンダード
VBAスタンダード
暗記
テスト
出力
違反報告
表示設定
お気に入り
フルスクリーン表示
Nariki
2022年11月26日
カード
88
いいね
2
暗記
テスト
出力
広告
単語カード
設定
全面表示
引数
プロシージャから別のプロシージャを呼び出すとき、呼び出し先のプロシージャに「計算や処理の元となる値」を渡すことができる仕組み
・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
広告
コメント
コメントを送信
単語帳を共有
Twitter
LINE
はてな
アプリ
QRコード
URLコピー
キャンセル
表示設定
文字の色
デフォルト
白
シルバー
グレー
黒
赤
オレンジ
黄
黄緑
緑
水
青
紫
ピンク
文字の太さ
デフォルト
太字
文字の大きさ
デフォルトの文字サイズに加算・減算します。
px
チェック済を非表示
暗記でチェックをつけたカードを非表示にします。
カードの一部を隠す
カードの一部を指定して隠します。
表の文字
表のヒント
表の画像
裏の文字
裏のヒント
裏の画像
設定を適用する
つくる
さがす
ホーム
リスト
メニュー