VBA 文字列の操作 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| わずかな知識で VBA! |
VBA 文字列の操作 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
VBA 文字列の操作★VBA関数関数というと、複雑な演算を思い浮かべるかもしれませんが、 文字列を操作するVBA関数もあります。 文字列を操作するVBA関数は、プログラミングする上ではとても重要で、 これを使いこなせなければ、条件分岐などのプログラミングが難しくなります。 入力された文字列の中から、特定の事項や条件を引き出して判別したり、 データとして整形する場合など、 文字列の操作は、 プログラミングする上で不可欠なものと言えます。 ここでは、VBA関数のうち、非常によく使う文字列処理関数や、 データの整合性をチェックする関数などについて説明していきます。 |
わずかな知識で VBA! ![]() |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
最初に、文字列を操作するVBA関数の一覧を書いておきます。 機能がちょっと分かりずらいのもありますが、あとの解説を読めば何とかなると思います。(たぶん?)
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Left,Right 文字列の右/左から指定した文字数ぶんの文字列を返す strmoji = Left(strmoji, 3) Left(<文字列>,<文字数>) 変数strmojiが仮に「12345」なら、strmojiに「123」が代入されます。 全角でも半角でも1文字として数えます。 Mid 指定された位置から指定した文字数ぶんの文字列を返す strmoji = Mid(strmoji,3,2) Mid(<文字列>,<開始位置>,<長さ>) 変数strmojiが仮に「12345」なら、strmojiに「34」が代入されます。 長さを省略すると、開始位置以降の全ての文字となります。 Len 文字列の長さを返します。 i = Len(strmoji) Len(<文字列) 変数strmojiが仮に「12345」なら i に 5が代入されます。 Instr 文字列の中から別の文字を前(左側)から検索し、最初に見つかった文字位置を 前(左側)からの文字位置で返します。 i = InStr(keisansiki, "×") Instr(<開始位置>,<文字列>,<検索文字>,<モード>) keisansikiが「125.25×2.75」なら i に7が代入されます。 InstrRev 文字列の中から別の文字を後方(右側)から検索し、最初に見つかった文字位置を 前(左側)からの文字位置で返します。 i = InStrRev(keisansiki, "×") Instr(<開始位置>,<文字列>,<検索文字>,<モード>) keisansikiが「125.25×2.75」なら i に 7が代入されます。 keisansikiが「125.25×2.75×10.00」なら i に 12が代入されます。 LCase・UCase アルファベットの大文字と小文字を変換します。 strmoji = LCase(strmoji) strmoji = UCase(strmoji) ユーザーが入力したデータが大文字で、条件判断等が小文字で設定してあるときなどに これらの関数を使ってどちらかに変換して判断します。 StrConv 指定した方法で、文字列を変換します。 StrConv関数は、引数と組合せて、文字列を全て小文字にしたり、大文字にそろえたりと、 文字列の書式を変換します。 引数は、組合せて使用することも可能です。 strmoji = StrConv(Range("C5").Value, vbNarrow + vbProperCase) vbUpperCase : 文字列を大文字に変換する vbLowerCase : 文字列を小文字に変換する vbProperCase : 文字列の各単語の先頭の文字を大文字に変換する vbWide : 文字列内の半角文字を全角文字に変換する vbNarrow : 文字列内の全角文字を半角文字に変換する vbKatakana : 文字列内のひらがなをカタカナに変換する vbHiragana : 文字列内のカタカナをひらがなに変換する vbUnicode : システムの既定のコードページを使用して文字列をUnicodeに変換する vbFromUnicode : 文字列をUnicodeからシステム既定のコードページに変換する Chr ASCIIコードに対応する文字列を返します。 最近のExcelでは知らなくても済むようになってきましたが、 MsgBox関数や、InputBox関数などで、メッセージの改行等を行います。 Sub tesuto() Dim modori As Integer modori = MsgBox("MsgBox関数について知りたいですか?", 36, "学習意欲の確認") Select Case modori Case 6 MsgBox "「はい」が押されました。" & Chr(13) & Chr(10) _ & "続けてお読みください!", , "がんばりましょう!" Case 7 MsgBox "「いいえ」が押されました。" & vbCrLf _ & "後悔しますよ!", , "残念!" End Select End Sub Case6 の部分が Chr関数を使って作成した部分で、 Case7 の部分は、組込定数を使って作成した部分です。 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Asc 文字列に対応する文字コードを返す。 文字コードは、たとえば大文字のA〜Zなら65以上90以下となります。 Asc(文字列) 空白の場合は、実行時エラーとなります。 私の場合は、日本語がメインなので、あまり使いません。 Trim 文字列の前後のスペースの削除 Trim関数は、引数に指定した文字列の先頭と末尾のスペースを削除します。 しかし、文字列の中のスペースは削除できません。 その場合は、前出のReplace関数を使用します。 strmoji = Trim(Range("C5").Value) LTrim関数:先頭のスペースを削除します。 RTrim関数:末尾のスペースを削除します。 Replace 文字列の置換 「指定された文字列の一部を、別の文字列で指定された回数分で置換した文字列を返します。」 上の文章はヘルプの説明文です、例のごとく日本語が変ですが、 下の使用例をみればすぐにわかると思います。 strokikaemoji = Replace("VBA文字列の操作", "VBA", "", 1, -1, 1) 「VBA文字列の操作」の中の、「VBA」を空白と置き換え(消す)ます。 strokikaemoji は 「文字列の操作」となります。 1, -1, 1 は省略可能で、順に、「開始位置」、「置換回数」、「比較モード」となっています。 省略すると、文字列の中にある全ての置換該当文字が置換されます。 文字列の中の空白(スペース)を削除する場合は、こうです。 strmoji = Replace(strmoji, " ", "") StrComP 2つの文字列を比較してバリアント型の値を返します。 StrComp関数は、比較モード定数があり、それを指定して比較します。 StrComp(<文字列1>、<文字列2>、<比較モード>) 実際のプログラミングで行う文字列の比較は、 = : 等しい If strmoji = strmoji2 Then <> : 等しくない If strmoji <> strmoji2 Then Like : 文字列の中に指定した文字列がある。 If strmoji Like "*文字*" then で、今のところ十分なので、この関数は使ったことがありません。 「Space」、「String」、「StrReverse」関数も、同じ理由で省略します。 知りたい方は、VBEのヘルプを参照してください。(わずかな知識でExcel VBA) Format Format関数は、その用途が非常に広い関数です。 文字列を指定した書式に変換します。 strmoji = Format(strmoji,"#,##0") strmoji = Format(strmoji,"000-0000") Fomat(<文字列>,<変換書式>) 使用する引数によって、いくつもの異なる動作をします。 引数については、「マクロの記録」に教えてもらうか、 Excelの「セルの書式設定(F)」→「表示形式」タブ→「分類(ユーザー定義)」で学べます。 文字列のチェック データを数値として評価できるかどうかのチェック データを入力したり、書式を変換したりする前に、データに誤りがないかどうかをチェックすることは とても大事なことです。 たとえば、データが文字列だと、SingleやLongなどの変数には代入できません。 そこで、変数に格納する前に、データを数値として評価できるかどうかをチェックします。 その関数が IsNumeric関数です。 If IsNumeric(kazu.Value) = True then suryo = kazu.Value Else MsgBox "数量を正しく入力してください!" Exit Sub End if 上は、ユーザーフォームのTextBox(kazu)に入力したデータを取得する時のものです。 変数(suryo)が、Long型の場合は、このようにしています。 数量は、String型として取得しても結構ですが、あとで、大きさを比較する場合などは、 Long,やSingle型などでないと比較できません。 その他のチェック IsDate :データを日付として評価できるかどうかをチェック IsObject :データをオブジェクトとして評価できるかどうかをチェック |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
わずかな知識でVBA! TOP マクロで何ができる? ユーザーインターフェース マクロの記録 マクロの登録 イベントについて マクロの編集 ゲームで覚えるVBAプログラミング オブジェクトの操作 セルの操作 MsgBox関数・InputBox関数 変数の型 ヘルプの活用 イミディエイトウィンドウ Withステートメント Setステートメント 条件分岐のステートメント If Then Else,Select Case 繰り返しのステートメント Do Loop 繰り返しのステートメント For Next ダイアログボックスを作ってみよう1 ダイアログボックスを作ってみよう2 【実践編】 ActiveXコントロール 各コントロールのプロパティ 文字列の操作 Endプロパティ リンク・検索 相互リンク マイプロフィール YouTubeの部屋 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Copyright (C) わずかな知識でVBA! All Rights Reserved