- 日本語変数・関数
- 読みやすいコードの書き方
- 入門・まとめ
- VBAの落とし穴
- ○○と△△の違い
- 汎用マクロ・便利ツール
- 汎用関数集
- 完成品マクロ
- エラー対策
- マクロの高速化
- VBEの使い方
- マクロでマクロを書く
- 仕様・考察
- 雑談・その他
- プロシージャ分割
- クラスモジュール
- 基本の書き方・サンプルコード集
日本語変数・関数
変数を日本語にすればプログラミングが上達する
英訳してはいけない変数名第1位「ワークシート」
英訳してはいけない変数名第2位「列見出し名」
英訳してはいけない変数名第3位「専門用語」
アプリケーションハンガリアン+日本語は最強の変数名だ
ユーザー辞書(IME単語登録)を使ってコードを書く
読みやすいコードの書き方
定数を使って読みやすく変更に強いマクロを書く
マジックナンバーを減らす方法6選
VBAではカウンタ変数に「i」を使うな
Cells(R, ○)←○を入力するスピードを極めろ!
Elseの中にメインコードを書かない
If文は判定回数より読みやすさを最適化すべし
For文をたくさん分割しても処理は遅くならない
ベタ打ち数値はすべてマジックナンバー?
コロン:を使って複数行のコードを1行に書く-マルチステートメント-
入門・まとめ
◇ Range・Cells
RangeとCellsの使い方 - セルの指定と使い分け
最終行を取得する方法7選 (UsedRange/End~)
最終列を取得する方法5選
セル範囲(Range)を取得する方法10選
◇ ワークシート
ワークシートを指定する方法7選
すべてのシートに同じ処理を行う - For~Nextステートメント
◇ 読みやすいコードの書き方
定数を使って読みやすく変更に強いマクロを書く
マジックナンバーを減らす方法6選
◇ 汎用マクロ・便利ツール
個人用マクロブックの作り方と使い方3選
◇ VBEの使い方
変数の宣言を強制(Option Explicit)は必ず設定すべし
VBE(コードを書く画面)の文字/背景色を変更する
◇ FileSystemObject
FileSystemObjectとは-Dir関数群との違い
FileSystemObject入門-参照設定と変数宣言
FileSystemObject入門-ファイル一覧の取得
FileSystemObject入門-フォルダ取得と再帰処理
FileSystemObject入門 - FSOって何が便利なの?
◇ プロシージャ分割
プロシージャ(Sub/Function)の使い方入門
よく書くコードは汎用関数に - 作り方と使い方
◇ クラスモジュール
簡単で便利なクラスを作って学ぶクラスモジュール入門
VBAの落とし穴
通常の実行ではエラーが出るのに1行ずつ実行すると上手くいく原因
DisplayAlertsを常時Falseにしてはいけない
OnErrorResumeNextはIfの分岐をTrueとみなす
Findは遅くて非表示に弱くてユーザー操作の影響を受ける
Endによる最終行取得は非表示の行を検知できない
単セル.SpecialCellsはシート全体から実行とみなされる
For Each ○ In Range はセルごとのループとは限らない
セル範囲のコピー&ペーストに非表示のエリアは含まれる?
結合セル.Offset(1)は結合エリアの1つ下を指す
Protectメソッドを連続実行すると保護が解除される
掛け算を置換するとワイルドカード*と認識される
"1"+"1"="11"
Dirループ中は別関数であっても他のDirは使えない
読取専用ブック.Saveは警告なく別ブックに保存される
Workbooks.Open中にShiftを押すとマクロが停止する
Len関数は文字列長でなく変数の消費メモリを返すことがある- ExcelVBA -
Val関数は全角(日本語入力)の「1」を0に変換する
Shapesにはドロップダウンリストの▼が含まれる
Dictionary.Keys(i) .Items(i)と書いてはいけない
Function名に句読点を使うとシート上で呼べなくなる
日本語の関数はクイックヒントの太字強調がズレる
○○と△△の違い
RangeとCellsの違い
RangeオブジェクトとRangeプロパティの違い
Worksheet.Selectと.Activateの違い
Replace関数とReplaceメソッドの違い
IsNumeric関数とISNUMBER関数の違い
VALUE関数とVal関数(とCDbl関数)の違い
DirとFSO.FileExistsの違い
DirとFSO.FolderExistsの違い
KillとFSO.DeleteFileの違い
RmDirとFSO.DeleteFolderの違い
MkDirとFSO.CreateFolderの違い
FileCopyとFSO.CopyFileの違い
NameとFSO.MoveFileの違い
NameとFSO.MoveFolderの違い
Time関数とTimer関数の違い
Do While と Do Until の違い
Do While~Loop と Do~Loop While の違い
変数の型「Long」と「Integer」の違い
キャメルケースとスネークケースの違い
キャメルケースとパスカルケースの違い
キャメル記法とハンガリアン記法の違い
システムハンガリアンとアプリケーションハンガリアンの違い
Function と Property Get の違い
ByVal(値渡し)とByRef(参照渡し)の違い
Property Let と Property Set の違い
個人用マクロブックと普通のブックの違い
汎用マクロ・便利ツール
個人用マクロブックの作り方と使い方3選
選択セルの値をGoogleで検索するマクロ
空の行を一括で削除するマクロ
アクティブシートを新規ブックにコピーするマクロ
すべてのシートをA1セル選択状態にするマクロ
すべてのシートを一括で再表示するマクロ
数式を値に固定して、ついでに#N/Aも消すマクロ
アクティブブックの保存フォルダを開くマクロ
ブックを非表示にして保存して閉じるマクロ
フォルダ構成表から実際のフォルダを生成するマクロ
空のフォルダを一括削除するマクロ
印刷映えする格子罫線を自動で引くマクロ
ウィンドウ枠固定と印刷タイトルを同時設定するマクロ
着色を残して条件付き書式を削除するマクロ
選択範囲を1枚の用紙にクイック印刷するマクロ
上下左右の印刷余白を0にするマクロ
選択セル範囲に丸数字を連番で入力するマクロ
選択エリアの0値を置換で消去するマクロ
すべての図形(オブジェクト)を選択するマクロ
特定のセル範囲内にある図形を処理/選択する
ワークシートのオブジェクト名をマクロで設定する
列番号のEnum定数コードを自動生成するマクロ
列見出しをアルファベット⇔数字で切り替える
文字色・背景色を設定するマクロを書くマクロ
マクロのロック(赤帯)を一時的に解除するマクロ
汎用マクロ・便利ツール用の共通関数について
マクロの高速化
マクロの速度は追求すべきものだけを追求すべし
マクロの処理時間を計測する-Timer関数の使い方
Sub/Functionプロシージャを呼ぶのにかかる時間
Instr関数とLike演算子の速度比較(文字列検索)
IfステートメントとIIf関数の速度比較
VLOOKUP関数を高速化する方法2選
仕様・考察
同じコードなのにエラーが変わるRangeの不思議
Worksheets("○○"). の入力選択肢を出す方法
Dir関数でサブフォルダの一覧を取得する方法
深い階層のフォルダ作成を再帰関数で行う
WithとNameステートメントは併用できない
Dimを省略していきなりReDimを書いてもいい?
変数宣言(Dim)とNewを1行で済ませてよいか
マージソートのサンプルコード
雑談・その他
人に何か伝えるなら母国語で
3キーフットスイッチに割り当てると便利なショートカットトリオ7選
明けましておめでとうございます。
関数(プロシージャ)分割は思ってるより簡単です
変数名に接頭する「my」の意味
プログラマ向けピアノ楽譜の読み方
VBAでインクリメント演算子(++i)を使う方法
50日連続投稿達成!良かったこと悪かったこと
ブログタイトル「和風スパゲティ」の由来
明けましておめでとうございます
姉妹サイト「和風スパゲティのソース」を開設しました
漢字=表意文字って素晴らしい
姉妹サイト閉鎖のご報告
ExcelVBAシステム開発での副業記録
明けましておめでとうございます
サイトマップとカテゴリを整理しました
2/26(金)20:00~ VBA勉強会「初心者向けオートフィルタの使い方」
12/11(土)20:00~ VBA勉強会「Sub/Functionの使い方入門!」
1/29(土)20:00~ VBA勉強会「ライトニングトーク」
4/2(土)20:00~ VBA勉強会「脱初心者!メンテナンスしやすいマクロの作り方」
2/11(土)20:00~ VBA勉強会「日本語変数のすすめ+母国語で作る自作関数入門」
プロシージャ分割
プロシージャ(Sub/Function)の使い方入門
よく書くコードは汎用関数に - 作り方と使い方
Sub/Functionの引数を省略可能にする-Optional
引数を好きな個数渡せる関数を作る-ParamArray
ParamArrayを別関数のParamArrayに渡す方法
クラスモジュール
簡単で便利なクラスを作って学ぶクラスモジュール入門
マクロの実行時間計測(Timer)をクラス化する
クラスモジュールのエラーをクラス内で止める設定
コンストラクタ(Initialize)に引数を渡せない問題
VBAにおいて「隠蔽」ってどのくらい重要?
基本の書き方・サンプルコード集
Range・Cells
◇ 入門・まとめ
RangeとCellsの使い方 - セルの指定と使い分け
最終行を取得する方法7選 (UsedRange/End~)
最終列を取得する方法5選
セル範囲(Range)を取得する方法10選
◇ 基本の書き方
Range(Cells,Cells)の親シートを指定する方法
セル範囲の値だけコピーする-Range.Value(Copy)
セル範囲の数式をコピーする-Range.Formula
セルに数式を入力する - Range.Formula
セルのロックを設定/判定する-Range.Locked
固定のセル(Range)を定数(Const)で定義する
◇ サンプルコード
Ctrl+Shift+↓のセル範囲取得をVBAで行う方法
セル範囲を縮小する/見出し行を除外する
セル範囲を元の大きさを基準に拡大縮小する
指定のセル範囲(Range)の最終行を取得する
CurrentRegionの最終行を取得する
ロックされていないセルをすべて選択/クリアする
ワークシート
◇ 入門・まとめ
ワークシートを指定する方法7選
すべてのシートに同じ処理を行う - For~Nextステートメント
◇ 基本の書き方
シート名を取得・変更する - Worksheet.Name
シートをコピーする - Worksheet.Copy
シートを移動する - Worksheet.Move
シートを削除する - Worksheet.Delete
シートを保護する - Worksheet.Protect
◇ サンプルコード
シートを新規ブックにコピー/移動する
シートを別のブック(の末尾)にコピー/移動する
複数のシートをまとめてコピー/移動する
アクティブシートを変えずにシートを追加・コピーする
新規シートを新しいブックに追加する
ワークシートが存在するかチェックする関数
シート名をセル値から取得してWorksheetを指定する方法
ブック内の最終(右端)シートを取得する
指定のシートが何番目のシートか調べる
隣のシート(前のシートや次のシート)を取得する
偶数シートなど飛び飛びのシートをループする
文字列からシート名に使えない文字を消去する
重複しないよう連番付きでシート名を設定する
シートの保護設定を調べる/同じ設定でシートを保護する
マクロでのみ編集可能なシート保護を設定する
シート関数・VBA関数
◇ 基本の書き方
ワークシート関数を使用する-WorksheetFunction
If~Else~EndIfを1行で書く - IIf関数
◇ サンプルコード
WorksheetFunctionの呼び出しを短縮する方法
ブック・ファイル
◇ 基本の書き方
ブックを上書き保存する - Workbook.Save
ブックを閉じる - Workbook.Close
ブックを保護する - Workbook.Protect
ファイルをコピーする - FileCopyステートメント
ファイルを移動・名称変更する-Nameステートメント
ファイルを削除する - Killステートメント
フォルダを作成する - MkDirステートメント
空のフォルダを削除する - RmDirステートメント
フォルダを移動・名称変更する-Nameステートメント
◇ サンプルコード
ブックを現在開いているかチェックする関数
ブックを上書き保存して閉じる-Workbook.Close
ブックを保存せずに閉じる - Workbook.Close
読取専用の推奨を無視して書込権限でブックを開く
破損したブックを修復して開く(CorruptLoad)
指定のフォルダをエクスプローラーで開く
ダイアログボックスでフォルダを指定・選択する
フォルダが存在するか調べる-Dir/FSO.FolderExists
フォルダが空か判定する
深い階層まで一気にフォルダを作成する
重複しないよう連番付きでフォルダを作成する
セルの値を元にフォルダを一括で作成する
フォルダを別のドライブに移動する
フォルダを統合する(同名のフォルダに移動する)
ファイルを部分一致(ワイルドカード)で検索する
フォルダを部分一致(ワイルドカード)で検索する
パスからフォルダ名やファイル名を取得する
既存ファイルを上書きしてファイルを移動する
重複しないようファイル名に連番を付与する関数
FileSystemObject
◇ 入門・まとめ
FileSystemObjectとは-Dir関数群との違い
FileSystemObject入門-参照設定と変数宣言
FileSystemObject入門-ファイル一覧の取得
FileSystemObject入門-フォルダ取得と再帰処理
FileSystemObject入門 - FSOって何が便利なの?
◇ 基本の書き方
Fileオブジェクト(FileSystemObject)
Folderオブジェクト(FileSystemObject)
FileSystemObject.FileExistsメソッド
FileSystemObject.CopyFileメソッド
FileSystemObject.MoveFileメソッド
FileSystemObject.DeleteFileメソッド
FileSystemObject.FolderExistsメソッド
FileSystemObject.CreateFolderメソッド
フォルダをコピーする - FSO.CopyFolder
フォルダを移動する - FSO.MoveFolder
フォルダを削除する - FSO.DeleteFolder
◇ サンプルコード
FileSystemObjectの呼び出しを短縮する方法
書式設定・表示設定
◇ 基本の書き方
セルの文字配置(水平/垂直など)の書式を設定する
◇ サンプルコード
Colorプロパティの値からRGBの値を求める
セルの文字色・背景色を列挙型Enumで記憶する
文字列
◇ 基本の書き方
文字列を部分一致で比較する - Like演算子
文字列を区切り文字付きで結合する - Join関数
◇ サンプルコード
文字列内の指定文字の登場回数をカウントする
指定の文字列より左側(前方)を取り出す -Left+Instr関数
指定の文字列より右側(後方)を取り出す-Right/Mid+Instr関数
ある文字列からある文字列までを取り出す - Mid+Instr関数
指定の文字列より右側(後方)を削除する
指定の文字列より左側(前方)を削除する
文字列から文字列までを置換する/消す
文字列の右側(末尾)をn文字削除する
文字列の左側(先頭)をn文字削除する
カッコ内の文字列を取得する関数 - Mid,Instr関数
Mid関数を位置で指定できるようにカスタマイズ
文字列の中にある数字を抽出する関数
数値を丸数字①②③~に変換する
アルファベット(ABC)⇔数字(123)を変換する関数
複数のセル値を区切り付き文字列に結合する
図形(Shape)
◇ サンプルコード
すべての図形(オブジェクト)を削除する
オートフィルター
◇ サンプルコード
オートフィルターでデータを抽出する
オートフィルターをクリアして全て表示する
オートフィルターで抽出中の件数をカウントする
オートフィルターで数値の条件・区間を抽出する
オートフィルターの最終行を取得する
テーブル(ListObject)
◇ サンプルコード
テーブル(ListObject)の最終行を取得する
配列(Array)
◇ サンプルコード
セル範囲や複数セルから1次元配列を生成する