凡人も語りたい

VBAに関すことや日々考えている事柄について投稿しようと思っています。

VBAの悩みはVBAerに聞け! 第7回 1次会 話題のメモ帳

関数について

やまとさんが関数(Function)を使う理由

  1. コーディングで楽をしたいため
  2. メインのプロシージャが何やっているかがわかりやすい
関数を作るとは?
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 と思っていい(和風スパゲティさん)