VBAの悩みはVBAerに聞け! 第7回 1次会 話題のメモ帳
関数について
やまとさんが関数(Function)を使う理由
- コーディングで楽をしたいため
- メインのプロシージャが何やっているかがわかりやすい
関数を作るとは?
Worksheet関数を作れる?
条件があるものの、標準モジュールで作成したFunctionプロシージャ
ADD2とするとエラー→ADD列2行目の参照と認識してしまった
参照とみなせる関数は作れない
FunctionとSubの違い
sub:プロシージャ名は値を返さない
Function:プロシージャ名自体が値を返す
「:=」とは?
:= :関数の名前付き引数を指定して値を代入する。引数の順番を入れ替えても関数が機能する
= :変数へ値を代入する
引数のヒントを出すショートカット
Ctrl+i (りゅうりゅうさん)
- 引数のヒントをコピペするショートカットなかった?
ワークシート関数の引数入力ショートカット
Ctrl+Shift+A
→自作関数も同じく出る
ByVal、ByRef
ByVal:引数で渡した変数が呼び出し先の影響を受けない、省略不可
- ByValでしかできないこと
分割した先のプロシージャ内で引数を変数に代入しなくてもよい
ByRef:引数で渡した変数が呼び出し先の影響を受ける、省略可
- ByRefでしかできないこと
一つの関数で渡した複数の引数に対して複数の値を返してほしいとき
その他
変数日本語派?
- やまとさんの考え
業務で使うものは日本語、自分で使うものは英語
→以前モジュール名日本語でバグったことがある
goto gosubの違い
gotoは戻る場所を自分で管理する必要がある
→どこに戻るかわかりくい
gosubはreturnで元の処理に戻れる
- エラー処理の共通化、特定の計算値算出にjika便利(ほえほえさん)
- 「変数を共有して他から呼べない処理」という意味でスーパーPrivate sub と思っていい(和風スパゲティさん)