ブックを閉じる
ブックを閉じるにはCloseメソッドを使用します。
Workbooks("ブック名.xlsx").Close
また、引数により保存して閉じる、保存しないで閉じる、名前を付けて保存を選択することができます。
引数 | 定数 | 内容 |
SaveChanges | True | ブックの変更を保存して閉じます。 |
False | ブックの変更を保存せずに閉じます。 | |
省略 | ファイル名の入力を促すダイアログ ボックスが表示されます。 | |
FileName | ファイル名 | 指定されたファイル名で、変更したブックを保存します。 |
使用例
Sub Main() Dim WB As Workbook Set WB = ActiveWorkbook Application.Quit '保存と同時にExcelを終了させる WB.Close savechanges:=True End Sub
"Application.Quit"の記述は気持ち的にWB.close処理の後に書きたいが、そうするとExcelが終了せずに残ってしまう。そういうもの?
自分なりのExcel VBAコーディング規約
変数や関数の名前を特にルールを設けずコーディングしていたので今のうちに整理しておきたい。また、今後追加があればこの記事に追記していく。
命名規則
・Sub、Function→Pascal形式(大文字始まり。単語と単語のつなぎ目は大文字)
・動詞、名詞の順で繋げて命名する
・変数→Camel形式(小文字始まり。単語と単語のつなぎ目は大文字)
・オブジェクト変数→全部大文字
・カウンターはi,j,k,lでもOK
・とりあえず数字ならn,m
・件数を数えるときに使うならcnt
・メッセージはmsg
・フラグはflg
・中間処理などの格納はbuf
・一時的に使用する変数はtmp
・コロコロ変わるマジックナンバーはconstで宣言
・プロシージャ(サブ・関数)はモジュール名を指定して呼び出す
その他
・Integerは使わずLongを使う
・なんとなくVariantは辞める
・引数にByVal(値渡し)、ByRef(参照渡し)を指定する
・脱ハンガリアン記法
・Rangeを使用する場合はシート名から記述する
配列を多次元配列に変換する
配列データを多次元配列に変換するための関数。
多次元配列は途中で列数を増やすことができないため、事前に設定された列数より取り込む要素が多い場合は処理を終了するようにした。
使用例
Sub Main() Dim lineTxt As Variant lineTxt = ImportTxt("C:\bin\test.txt") Const txtCol = 3 '多次元配列の最大列数 Dim multiTxt As Variant multiTxt = MultiDimention(lineTxt, txtCol - 1, ",") End Sub
先日書いたテキストファイルを1行ずつ配列に取り込む関数で取り込んだ"lineTxt"を多次元配列に変換する流れ。前述の通り多次元配列の最大列数はこのMainで記載している。
必要な最大列数を調べる関数があればもっと汎用的になるか・・・。
配列から不要文字を削除して返す
関数を書くほどでもないかもしれないが、使用頻度はそこそこあるので作ってみた。
使用例
Sub Main() Dim testAry() As Variant: ReDim testAry(2) testAry(0) = "1,1" testAry(1) = "2,2" testAry(2) = "3,3" testAry = RemoveChar(testAry, ",") End Sub
配列内のデータからカンマを削除して返す処理。
処理後は testAry(o) = "11", testAry(1) = "22", testAry(2) = "33" となる。