第101回.Midステートメント
Midステートメントは、文字列変数の一部を他の文字列に置き換えます。
これは、マクロVBAのステートメントであり、Mid関数とは根本的に違うものです。
Midステートメントは、文字列の一部を置換するものです。
Midステートメント
stringvar | 必ず指定します。 変更する文字列変数の名前を指定します。 |
start | 必ず指定します。 バリアント型 (内部処理形式 Long) の値を指定します。 引数 stringvar の中の置き換えを始める位置を文字数単位で指定します。 |
length | 省略可能です。 バリアント型 (内部処理形式 Long) の値を指定します。 置き換えを行う文字数を指定します。 省略すると、文字列すべてが対象となります。 |
string | 必ず指定します。 新しく置き換える文字列式を指定します。 |
Midステートメントを実行しても、元の文字列の文字数は変更できません。
start + length が、stringvarの文字数を超える場合は、stringvarの文字数までが置換対象となります。
string(置き換える文字列)がlengthを超えている場合は、lengthの文字数までが有効となります。
実際には、lengthは省略し、stringの文字数が置換されるようにします。
MidBステートメント
構文はMidステートメントと同様となっています。
MidBステートメントでは、置換を開始するstringvar内のバイト位置をstartで指定し、置き換えるバイト数をlengthで指定します。
Midステートメントの使用例
Dim MyString As String
MyString = "ABCDEF"
Mid(MyString, 3, 2) =
"cd"
MsgBox MyString
”ABcdEF”と表示されます。
Midステートメントの必要性
文字列の置換であれば、
Replaceメソッド
Replace関数
例えば、データに、
1234-1234-1234
2345-1234-1234
・・・
このようなデータがあるとして、
この真ん中の1234だけを2345に変更するとした場合、
Replace関数だと、単純な置換ができません。
以下では参考VBAとして、「1234-1234-1234」の置換をしています。
Dim str As String
str = "1234-1234-1234"
str = Left(str, 5) & Replace(str, "1234", "2345", 6, 1)
Replace関数では、かなり面倒な処理となっています。
(これをFunctionにして関数化しておけばよいとは言えますが)
Dim str As String
str = "1234-1234-1234"
Mid(str, 6) = "2345"
Midステートメントを使う事で、これだけで済んでしまいます。
そして、何よりも、
Midステートメントの良さは、処理が高速であるという事です。
置換すべきデータ量が膨大で、置換処理に時間がかかっているような場合は、
Midステートメントが使えないかを検討して下さい。
実践での使用例
同じテーマ「マクロVBA入門」の記事
第107回.プロシージャーの引数
第108回.変数の適用範囲(スコープ,Private,Public)
第100回.InputBoxメソッド(インプットボックス)
第101回.Midステートメント
第102回.Intersectメソッド
第103回.UnionメソッドとAreasプロパティ
第104回.GetPhoneticメソッドとSetPhoneticメソッド(フリガナ)
第109回.列挙型(列挙体)Enum
第110回.ユーザー定義型・構造体(Type)
第111回.静的配列
第112回.動的配列(Redim)
新着記事NEW ・・・新着記事一覧を見る
シート関数のCOUNTIFS,SUMIFS,MAXIFSと同じ処理|Power Query(M言語)入門(2023-02-28)
新旧マスタの差異比較|Power Query(M言語)入門(2023-02-28)
有効な最新単価の取得|Power Query(M言語)入門(2023-02-26)
有効な最新単価の取得|Power Query(M言語)入門(2023-02-21)
グルーブ内の最小・最大|Power Query(M言語)入門(2023-02-17)
2つのテーブルのマージ|Power Query(M言語)入門(2023-02-15)
「売上」が数値の行のみ取り込む|Power Query(M言語)入門(2023-02-13)
A列のヘッダー名を変更する|Power Query(M言語)入門(2023-02-11)
CSVのA列が日付の行だけを取り込む|Power Query(M言語)入門(2023-02-10)
列数不定のCSVの取り込み|Power Query(M言語)入門(2023-02-09)
アクセスランキング ・・・ ランキング一覧を見る
1.最終行の取得(End,Rows.Count)|VBA入門
2.RangeとCellsの使い方|VBA入門
3.変数宣言のDimとデータ型|VBA入門
4.繰り返し処理(For Next)|VBA入門
5.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
6.マクロって何?VBAって何?|VBA入門
7.並べ替え(Sort)|VBA入門
8.エクセルVBAでのシート指定方法|VBA技術解説
9.Range以外の指定方法(Cells,Rows,Columns)|VBA入門
10.ブックを閉じる・保存(Close,Save,SaveAs)|VBA入門
このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。