タグ

ブックマーク / vbabeginner.net (2)

  • VBAの参照渡し(ByRef)と値渡し(ByVal)の違い | Excel作業をVBAで効率化

    参照渡しと値渡しの違い 参照渡しと値渡しを簡単におさらいすると、関数の引数につけるキーワードのByRefとByValのことを指し、ByRefを付けるか省略した場合は参照渡しの引数として扱い、ByValを付けた場合は値渡しの引数になります。 で、題の参照渡しと値渡しの違いですが、関数(プロシージャ、メソッド)の中で変更した引数の「値」を呼び出し元に引き継がれるかどうか、という点です。 参照渡し(ByRef)の場合は関数内部で変数に加えた変更が呼び出し元でも引き継がれますが、値渡し(ByVal)の場合は引き継がれず、関数を呼び出したときの値のままです。 ただ、引数がプリミティブ型とオブジェクト型でByValを付けたときの挙動が変わるため注意が必要です。 このページでは特にその注意点について記述しています。 構文 プロシージャの構文は以下になります。 Sub プロシージャ名([ByRef(省略

    VBAの参照渡し(ByRef)と値渡し(ByVal)の違い | Excel作業をVBAで効率化
  • 文字列の指定した一部を取得する(Mid、MidB) | Excel作業をVBAで効率化

    Mid関数とMidB関数は文字列の指定位置から指定文字数の文字列を取得します。 Mid関数とMidB関数の違いは第三引数に指定する値の考え方が異なる点です。第一引数と第二引数の考え方は同じです。 詳細は後述しますが、日語圏のMidB関数はそのままではほとんど使い物になりません。 Shift-JISとしての全角を2バイト、半角を1バイトとして処理したい場合は「VBAでバイト単位でのLenとMidとLeftとRight」にShift-JISの感覚で使えるMid関数を紹介していますので参考にしてください。 MidB関数はバイト単位という説明は間違い MidB関数はバイト数を指定する、という説明が多いですが、日語圏での説明としては不十分です。 実際にはバイト数ではなく、第三引数の文字数には文字数×2を指定することになります。 これはMidB関数がShift-JIS換算のバイト数ではなく、2バイ

    文字列の指定した一部を取得する(Mid、MidB) | Excel作業をVBAで効率化
    active_ps
    active_ps 2021/08/12
    “MidB関数はバイト単位という説明は間違い”
  • 1