第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入門」の記事
第102回.Intersectメソッド
新着記事NEW ・・・新着記事一覧を見る
TRIMRANGE関数(セル範囲をトリム:端の空白セルを除外)|エクセル入門(2024-08-30)
正規表現関数(REGEXTEST,REGEXREPLACE,REGEXEXTRACT)|エクセル入門(2024-07-02)
エクセルが起動しない、Excelが立ち上がらない|エクセル雑感(2024-04-11)
ブール型(Boolean)のis変数・フラグについて|VBA技術解説(2024-04-05)
テキストの内容によって図形を削除する|VBA技術解説(2024-04-02)
ExcelマクロVBA入門目次|エクセルの神髄(2024-03-20)
VBA10大躓きポイント(初心者が躓きやすいポイント)|VBA技術解説(2024-03-05)
テンキーのスクリーンキーボード作成|ユーザーフォーム入門(2024-02-26)
無効な前方参照か、コンパイルされていない種類への参照です。|エクセル雑感(2024-02-17)
初級脱出10問パック|VBA練習問題(2024-01-24)
アクセスランキング ・・・ ランキング一覧を見る
1.最終行の取得(End,Rows.Count)|VBA入門
2.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
3.繰り返し処理(For Next)|VBA入門
4.変数宣言のDimとデータ型|VBA入門
5.RangeとCellsの使い方|VBA入門
6.ブックを閉じる・保存(Close,Save,SaveAs)|VBA入門
7.メッセージボックス(MsgBox関数)|VBA入門
8.セルのクリア(Clear,ClearContents)|VBA入門
9.ブック・シートの選択(Select,Activate)|VBA入門
10.条件分岐(Select Case)|VBA入門
このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。