【VBA入門】Left関数で先頭から指定文字数だけ抜き出す

Left関数って使っていますか?ある文字列の中の先頭から指定文字数分だけ抜き出す場合に使用します。

InStr関数Right関数などと一緒に使われることも多いです。この記事では、Left関数について

  • Left関数の使い方
  • LeftB関数の使い方


という基本的な内容から、

  • Right関数の使い方
  • Right関数、InStr関数との組み合わせ
  • Mid関数との組み合わせ
  • 全角文字列を扱う方法
  • 参照設定でエラーが出たときの対処法

など応用的な内容についても解説していきます。

今回はLeft関数について、使い方をわかりやすく解説します!

Left関数の使い方

Left関数は文字列内の先頭から指定した文字数分の文字を含む文字列を返します。

以下のように記述します。

  • stringは対象となる元の文字列です。
  • lengthは抜き出す文字列の長さを指定します。
  • 0を指定すると、長さ0の空文字列が返されます。
  • stringの文字数以上の値を指定すると、文字列全体が返されます。

サンプルコードで確認しましょう。

実行結果:
Left03

このサンプルコードでは、Left関数を使って文字列の先頭から指定した5文字を抜き出しています。

LeftB関数の使い方

LeftB関数は文字列の先頭から指定したバイト数分の文字列を返します。LeftB関数は以下のように記述します。

LeftB関数はLeft関数と比べて、指定したバイト数分の文字列を返すという部分が違うだけで、引数の指定はLeft関数と変わりません。

引数の指定についてはLeft関数を参照してください。サンプルコードで確認しましょう。

実行結果:
Left03

このサンプルコードでは、LeftB関数を使って文字列strの先頭から指定した10バイト分だけ抜き出しています。

ここで注意があります。VBAでは文字コードはUTF-16が使われています。UTF-16では半角文字でも全角文字でも1文字のバイト数は2バイトです。

特に半角文字の場合でも、文字数とバイト数の値が違うので注意しましょう!

Right関数の使い方

Left関数はRight関数と合わせて使われることも多いので、Right関数についても解説します。Right関数は文字列の最後尾から指定文字数分だけ文字列を抜き出します。

以下のように記述します。

引数stringには、対象となる元の文字列を指定します。

引数lengthには、引数stringの最後尾から抜き出す文字数を指定します。

Right関数、InStr関数との組み合わせ

Left関数はRight関数InStr関数と組み合わせて使われることがよくあります。

InStr関数を使って指定文字列の位置を取得し、その指定文字列より前の部分を抜き出すためにLeft関数を使い、後ろの部分を抜き出すためにRight関数を使うといった使い方になります。

サンプルコードで確認しましょう。

実行結果:
mid02

このサンプルコードでは、InStr関数を使って文字列strの中の半角スペースの位置を取得しています。InStr関数で取得した位置より1文字前までLeft関数を使って抜き出しています。

またRight関数の最後尾から位置の指定を文字列strの文字長さとInStr関数で取得した位置から算出しています。InStr関数の使い方については、こちらで詳しく解説していますので、ぜひ参考にしてください。

【VBA入門】InStrで文字列検索する方法を6つのステップでマスター
更新日 : 2019年4月25日

Mid関数との組み合わせ

Left関数はRight関数やInStr関数以外にも、Mid関数と組み合わせて使われることもあります。

Mid関数は、ある文字列の中の指定位置から指定文字数分だけ抜き出すことができます。Mid関数は下記のように記述します。

Left関数とMid関数を組み合わせた使い方については、こちらで詳しく解説しています。

ぜひ参考にしてください。

【VBA入門】Mid関数で文字列の抜き出し(Left、InStr関数も解説)
更新日 : 2019年4月20日

全角文字列を扱う方法

これまでのサンプルコードでは対象とする文字列は半角の英数字でした。

では日本語の全角文字列を扱う場合は文字数はどのように数えられるのでしょうか?結論を言うと、英数字のような半角文字でも日本語のような全角文字でも数え方は変わりません。

前述のとおり、VBAでは半角文字でも全角文字でも1文字はどちらも2バイトで数えられます。角文字でも全角文字でも文字数もバイト数も変わりません。

ですので半角文字、全角文字の違いは気にする必要はなさそうです。それではサンプルコードで確認しましょう。

実行結果:
Left01

このサンプルコードでは、Left関数を使って文字列strから文字列str1より前の文字列を抜き出しています。

Left関数の指定文字数は、Len関数を使ってstrの文字数とstr1の文字数を取得し、算出して使用しています。Len関数を使って取得したstr1の文字数を表示していますが、日本語の全角文字でも4文字と正しく取得できていることがわかります。

参照設定でエラーが出たときの対処法

VBAのLeft関数などでコンパイルエラーが発生することがあるようです。

Left02

関数の前に「Strings.」をつけると解決するようです。

参照設定の不具合のようですので、こちらも参考にしてみてください。
https://msdn.microsoft.com/ja-jp/library/office/gg251321.aspx

まとめ

ここでは、Left関数、LeftB関数の使い方について説明しました。

Left関数はRightt関数、InStr関数と組み合わせて使うと、文字列の分割操作などもできるようになります

使いこなすことができるように、この記事を何度も参考にして下さいね!

Excel VBAを最短で習得したい方へ

元々ITリテラシーの高い方やプログラムの学び方がわかっている方であれば、この記事通りに進めていけば、Excel VBAを独学で習得することができるでしょう。

ただし、実際の学習期間中はつまづいている時間がほとんどです。

「なかなかやり遂げられ無い、挫折してしまった」
「時間が足りない」
「情報が少なくどう調べればいいかわからない」
「エラーを解決することができない」

このような悩みを抱えている方も少なく無いと思います。

  • もう挫折したくない
  • 本業と両立しながら、好きな時間で自分のペースで勉強を続けていきたい
  • 自分だけのカリキュラムで効率的に勉強したい
そんな方はお気軽に侍エンジニア塾までご相談ください。

お一人お一人に専属のインストラクターがつくので、より深くExcel VBAについて学習することできます。

まずは『無料体験レッスン』で、弊社のコンサルタントと一緒にあなた専用の学習方やカリキュラムを考えてみませんか?

Excel VBAならではの学習方法や、現役エンジニアから貴重なアドバイスを受けることができます。

詳しくは下の画像をクリックして弊社サービス内容をご確認ください。

cta2_vba2

LINEで送る
Pocket

書いた人

長野 透

長野 透

熊本在住のフリープログラマ兼ライターです。C/C++/C#、Java、Python、HTML/CSS、PHPを使ってプログラミングをしています。専門は画像処理で最近は機械学習、ディープラーニングにはまっています。幅広くやってきた経験を活かしてポイントをわかりやすくお伝えしようと思います。
お問合せはこちらでも受け付けています。
[email protected]

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説