【VBA】phpとかrubyやった後に、vbaを触る時に覚えておいた方がよいこと まとめ
2015/04/18
普段PHP rubyを使っていて、久しぶりにVBAを触り反省したことをメモ。
たまにしかVBAを触らないので、いつも出だしでイライラしてしまう。反省。
基本
・エディタのVisualBasicでローカルビューを開いて変数の中身をみられるようにする。
⇒var_dumpやpp的なものが無いので、ちゃんとツールを使って確認する。
・デバッグのステップ実行はF8。
・気軽に変数の中身確認するならmsgbox()
・「Sub main()」 でサブルーチンを作るとそいつがメイン関数(実行対象)になる。
・複数行コメントアウトはなし。
・コードの改行は「 _」でつなぐ。(文との間に半角スペースが必要)
配列について
PHPやRubyに鳴れると凄い使いずらい…要注意。
・先にも書きましたが、
エディタのVisualBasicでローカルビューを開いて変数の中身をみられるようにする。
⇒var_dumpやpp的なものが無いので、ちゃんとツールを使って確認する。
・配列の要素数が固まらない時は、「Redim」を使って、都度要素数を変更してあげる。配列の宣言時に要素数を決めないで、宣言してあげる必要あり。
・上記の理由で要素数を取ることが多いが、その時はUbound()を使うと配列長が取得できる。下記はループ時に都度Redimするサンプル。
1 2 3 4 5 6 7 |
Dim arrVal() As Variant ' 宣言 何個入るか分からない。 ' loop開始 Do Until EOF(1) ReDim arrPjCode(UBound(arrPjCode) + 1) ' ループの度に要素数を「今+1」に宣言 arrPjCode(UBound(arrPjCode)) = val ' 値をセット。 Loop |
関数について
・subは戻り値なし、functionは戻り値あり。
・functionの戻り値は 関数名の変数の値。
1 2 3 4 5 |
Function getData() ' 省略 getData = 1 'これが戻り値 end Function |
その他オレオレ便利関数
・配列の検索。あるとtrue ないとfale
1 2 3 4 5 6 7 8 9 10 |
'配列の中に値があるかチェック Function chkDataInArray(arr As Variant, data As Variant) As Boolean result = Filter(arr, data) If UBound(result) <> -1 Then chkDataInArray = True '存在する Else chkDataInArray = False '存在しない End If End Function |
・日付 yyyymmdd_hhmissは下記
‘function タイムスタンプの取得
1 2 3 4 5 6 7 8 9 10 11 12 13 |
Function getDateTime() As Variant Dim today As Date Dim today_format As Variant today = Date today_format = Year(today) & Format(Month(today), "00") & Format(Day(today), "00") _ & "_" & Hour(Time) & Minute(Time) & Second(Time) 'ここでフォーマット制御 getDateTime = today_format End Function |
関連記事
関連記事はありませんでした