読者です 読者をやめる 読者になる 読者になる

Learning Note

できるようになったことを記録しています

シート名を配列に格納する

Excel VBA 処理系

シート名を配列に格納する関数


使用例

Sub main()
    Dim WB as Workbook
    Set WB = ActiveWorkBook

    Dim mySheetName As Variant
    mySheetName = CheckSheetName(WB)
End Sub

新しいブックを作成する

Excel VBA 出力系

ブックを作成するにはAddメソッドを使用する。

WorkBooks.Add

使用例

Sub Main()
  Dim WB As WorkBook 
  Set WB = WorkBooks.Add 
  WB.SaveAs "C:\bin\新しいブック.xlsx"
End Sub

ブックを保存する

Excel VBA 出力系

ブックを保存するにはSaveメソッドを使用する。

ActiveWorkBook.Save

他にも、以下のような書き方ができる。

SaveAs 名前を付けて保存
SaveCopyAs コピーを保存


使用例

Sub Main()
    ActiveWorkbook.SaveAs Filename:="c:\bin\名前を付けて保存.xlsm"
    ActiveWorkbook.SaveCopyAs Filename:="c:\bin\コピー.xlsm"
End Sub

ブックを閉じる

Excel VBA 出力系

ブックを閉じるには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が終了せずに残ってしまう。そういうもの?

自分なりのVBAコーディング規約

VBA ルール キャリア

変数や関数の名前を特にルールを設けずコーディングしていたので今のうちに整理しておきたい。また、今後追加があればこの記事に追記していく。

命名規則

・Sub、Function→Pascal形式(大文字始まり。単語と単語のつなぎ目は大文字)
・動詞、名詞の順で繋げて命名する

・変数→Camel形式(小文字始まり。単語と単語のつなぎ目は大文字)
・オブジェクト変数→全部大文字

・カウンターはi,j,k,lでもOK
・とりあえず数字ならn,m
・件数を数えるときに使うならcnt
・メッセージはmsg
・フラグはflg
・中間処理などの格納はbuf
・一時的に使用する変数はtmp

・コロコロ変わるマジックナンバーはconstで宣言
・プロシージャ(サブ・関数)はモジュール名を指定して呼び出す


その他

・Integerは使わずLongを使う
・なんとなくVariantは辞める
・引数にByVal(値渡し)、ByRef(参照渡し)を指定する
・脱ハンガリアン記法
・Rangeを使用する場合はシート名から記述する