HOME > VBA 基礎 >このページ
文字列関数(関数編)

■Contents

01 文字数を調べる
02 文字を取り出す
03 大文字/小文字の変換を行う
04 文字列の変換を行う
05 文字列コードを操作する
06 文字列を数値に変換する
07 数値を文字列に変換する
08 スペースを削除する
09 文字列の置換
10 データを比較する
11 文字を検索する
12 String 関数

01.文字数を調べる

【書式】 Len(文字列式)
 Len関数は指定した文字列式に含まれる文字数を返します。
【サンプルコード】
   Sub example_len()
     Dim str As String
     str = "accessVBA講座"
     MsgBox "Len: " & Len(str)  ’「11」が表示されます 
   End Sub



02.文字を取り出す

 Mid関数は文字列から指定した位置から指定した文字数分の文字列を返します。Right関数は文字列の右端から指定した文字数分の文字列を返します。Left関数は文字列の左端から指定した文字数分の文字列を返します。
【書式】Mid(文字列式,抽出開始位置,抽出文字数)
     Right(文字列式,抽出文字数)
     Left(文字列式,抽出文字数)

 文字列式    :取り出す元になる文字列を変数などで指定します。
                Null値が含まれる場合はNull値を返します。
 抽出開始位置:文字列の先頭文字を「1」としてどのこから文字列を取り出すかを数値で設定。
               総文字数を超える数値を設定した場合は,長さ0の文字列(””)を返します。
 抽出文字数  :取り出す文字数を設定。総文字数より大きい数を設定した場合は,抽出開始位
              置以降の全文字が返されます。
        Mid関数でこの引数を省略した場合や抽出開始以降の文字数より大きい値を指定
       した場合は,抽出開始位置以降の全文字列が返えされます。


【サンプルコード】
 Sub mojiretu()
    Dim str As String
    str = "accessVBA講座"

    MsgBox Mid(str, 3, 7)  '「cessVBA」と表示されます
    MsgBox Right(str, 3)  '「A講座」と表示されます   MsgBox Left(str, 3) '「acc」と表示されます End Sub



03.大文字/小文字の変換を行う

 Ucase関数はアルファベットの小文字を大文字に,Lcase関数はアルファベットの大文字を小文字に変換します。
【書式】 Ucase(文字列式)
     Lcase(文字列式)

 文字列式:変換する文字列です。Null値が含まれる場合はNull値を返します。
【サンプルコード】
  Sub mojiretu()
    Dim str As String
    str = "AccessVBA講座"

    MsgBox UCase(str)  ’「ACCESSVBA講座」と表示されます
    MsgBox LCase(str)  ’「accessvba講座」と表示されます
  End Sub   



04.文字列の変換を行う

StrConv関数を利用して,設定した文字列をいろいろな形式に変換できます。
【書式】 StrConv(文字列式,変換形式)

 文字列式:変換する文字列です。
 変換形式:実行する変換の種類の合計値として設定。
定数 内容
vbUpperCase 1 大文字に変換
vbLowerCase 2 小文字に変換
vbProperCase 3 各単語の先頭の文字を大文字に変換
vbWide 4 半角文字を全角文字に変換
vbNarrow 8 全角文字を半角文字に変換
vbKatakana 16 ひらがなをカタカナに変換
vbHiragana 32 カタカナをひらがなに変換
vbUnicode 64 システム既定のコードページを使って文字列をUnicodeに変換
vbFromUnicode 128 文字列をUnicodeからシステム既定のコードページに変換
【サンプルコード】
  Sub mojiretu3()
    Dim str As String
    str = "yamada Tarou / ヤマダ たろう"

    MsgBox "大文字変換:" & StrConv(str, vbUpperCase)
    MsgBox "大文字+カタカナ変換:" & StrConv(str, vbUpperCase + vbKatakana)
    MsgBox "小文字+ひらがな変換:" & StrConv(str, 34)
  End Sub



05.文字列コードを操作する

 Asc関数,Chr関数を利用して,文字コード(ASSCIIコード)の変換を行うことができます。ASCIIコードの文字コード(0〜255)にはスペースや各種記号(+,!,&,*など)が対応しています。例えば”A”〜”Z”には65〜90のASCIIコードが対応しています。
【書式】 Asc(文字)
     Chr(文字コード)
     
 文字:ASCIIコードに変換する文字
 文字コード:文字に変換するASCIIコード
【サンプルコード】
  Sub 文字コード()
    Dim i As Integer

        'A〜zを表示
    For i = 65 To 90
      MsgBox Chr(i)
    Next     'メッセージを改行して表示     MsgBox "この文章をここで改行しますよ。" & Chr(13) & Chr(10) & "改行しました。"   End Sub 
 次の例はイミディエイトウインドウに@AB・・・・Sを表示します。
     Sub Exsample()
          Dim i As Integer
     
          For i = 1 To 20
              Debug.Print Chr(Asc("@") + i - 1)
          Next i
     
     End Sub



06.文字列を数値に変換する

Val関数は数字(String型)を適当な数値型のデータに変換します。ただし、数値に変換できない文字を読み込んだ時点で変換を中止します。
【書式】 Val(文字列式)
      
 文字列式:数値に変換可能な任意の文字列式
【サンプルコード】
  Sub VAL関数()
    Dim A As String
    Dim B As String

    A = "123": B = "15才"
    MsgBox Val(A) + Val(B)   ’138(123+35)が表示されます。
    MsgBox A + B        '12315才が表示されます。 
  End Sub       



07.数値を文字列に変換する

【書式】 Str(数値)

 数値:文字列に変換する数値
【サンプルコード】
  Sub VAL関数()
    Dim A As Integer
    Dim B As Integer

    A = 123: B = 12
    MsgBox A + B 
  
   '135が表示されます
    MsgBox str(A) + str(B)
   '12312が表示されます。(文字列の連結)
    MsgBox str(A) + str(B) 
  End Sub



08.スペースを削除する

 LTrim関数,RTrim関数,Trim関数を利用して文字列の中からスペースを取り除くことができます。引数に設定した文字式から,全角,半角にかかわらず,LTrim関数は先頭のスペースを,RTrim関数は末尾のスペースを,Trim関数は先頭と末尾のスペースをを取り除きます。
【書式】 LTrim(文字列式)
      RTrim(文字列式)
      Trim(文字列式)

 文字列式:スペースを取り除く文字列式



09.文字列の置換

Replace関数は指定文字列を別の文字列に置換します。
【書式】 Replace(文字列式,被置換文字列,置換文字列[,検索開始位置[,
             置換回数[,比較種別]]])

 文字列式:置換する文字列を含む文字列式
 被置換文字列:置換される文字列
 置換文字列:置換する文字列
 検索開始位置:文字列式内の検索開始位置。省略した場合は先頭位置から検索されます。
 置換回数:置換する文字列数。この引数を省略した場合はすべての候補が置換されます。
 比較種別:文字式を比較するときに使用する文字列比較モード。規定値は-1です。
■文字列比較モード
定数 内容
vbUseCompareOption -1 OptionCompareステートメントの設定を使用して比較
vbBinaryCompare 0 バイナリモードで比較(大文字/小文字 半角/全角 ひらがな/カタカナを区別して比較
vbTextCompare 1 テキストモードで比較(大文字/小文字 半角/全角 ひらがな/カタカナを区別されず五十音で比較
vbDatabaseCompare 2 Accessのデータベースの設定を使用して比較
【サンプルコード】 (全角・半角のスペースを半角のスペースで検索して,””で置き換える)
  Sub Space_DEL()
    Dim Str As String
    Str = "Access VBA 講座"

    MsgBox "比較モードがvbUserCompareOption: " & Replace(Str, " ", "")
    MsgBox "比較モードがvbBainaryCompare: " & Replace(Str, " ", "", , , 0)
    MsgBox "比較モードがvbTextCompare: " & Replace(Str, " ", "", , , 1)
    MsgBox "比較モードがvbDarabaseCompare: " & Replace(Str, " ", "", , , 2)
  End Sub



10.データを比較する

 StrComp関数は引数に設定した2つの文字列を比較するときに使用します。
【書式】 StrComp(比較文字列,被比較文字列[,比較方法])

 比較文字列:比較する文字列
 被比較文字列:比較される文字列
 比較方法Replace関数の比較方法と同じ。
StrComp関数の戻り値
内容
比較文字列は被比較文字列未満の場合 -1
比較文字列と被比較文字列が等しい場合
比較文字列は被比較文字列を超える場合 1
比較文字列か被比較文字列がNull値の場合 Null値



11.文字を検索する

 InStr関数は,検索対象として設定した文字列の中に,検索条件とした文字列が含まれているかどうかを調べるときに使用します。
【書式】 InStr([検索開始位置,]検索対象文字列,検索条件文字列[,検索方法])
      
 検索開始位置:文字列式内の検索開始位置。省略した場合は先頭位置から検索されます。
        ただし,検索方法を設定した場合は指定しなければなりません。
 検索対象文字列:検索対象となる文字列。
 検索条件文字列:検索条件となる文字列。
 検索方法:文字列の検索方法を指定。設定値は,StrComp関数と同じ。
InStr関数の戻り値
内容
検索文字が見つかった場合 その文字位置
検索対象文字列が長さ0の文字列(””)のとき
検索対象文字列または検索条件文字列がNUll値のとき NUll値
検索条件文字列が長さ0の文字列(””)のとき 検索開始位置
検索文字が見つからないとき
検索開始位置の値が検索対象文字列の文字数を超えるとき
【サンプルコード1】 (全角のスペースを検索して見つかればスペースを削除します)
  Sub 検索()
    Dim Str As String
    Dim ret As Variant
    Str = "山田 太郎"

    ret = InStr(1, Str, " ", vbBinaryCompare)

    If ret <> 0 And IsNull(ret) = False Then
      MsgBox Left(Str, ret - 1) & Mid(Str, ret + 1)
    Else
      MsgBox "検索できませんでした"
    End If
  End Sub

【サンプルコード2】次のコードはパス名からファイル名を取り出す関数の例です。
 Function Get_FilleName(Temp As String)
   Dim l As Integer
   Dim j As Integer
   Dim RT As Variant
   Dim F_Name As String

    l = Len(Temp)
    For j = l To 1 Step -1
       RT = InStr(j, Temp, "\", vbBinaryCompare)
         If RT <> 0 And IsNull(RT) = False Then
             F_Name = Mid(Temp, RT + 1, l - RT)
             Exit For
         End If
    Next j
    Get_FilleName = F_Name
End Function

Sub Test()
  Debug.Print Get_FilleName("D:\Access2003\本科生管理\本科生管理2005")
End Sub


InStrRev 関数はある文字列 の中から指定された文字列 を最後の文字位置から検索を開始し、最初に見つかった文字位置 (先頭からその位置までの文字数) を返す文字列処理関数です。
【書式】InstrRev(検索対象文字列, 検索条件文字列[, 検索開始位置[, 検索方法]])
InstrRev 関数の構文は、次の名前付き引数から構成されます。
指定項目 説明
検索対象文字列 検索先の文字列式を指定。
検索条件文字列 検索する文字列式を指定。
検索開始位置 省略可能。各検索の開始位置を設定する数式を指定します。引数を省略すると 、最後の文字位置から検索を開始します。
検索方法 省略可能。文字列比較のモードを表す数値を指定します。引数 を省略すると、バイナリ モードで比較。
検索方法 の設定値
定数 説明
vbUseCompareOption -1 Option Compare ステートメントの設定を使用して比較
vbBinaryCompare 0 バイナリ モードで比較
vbTextCompare 1 テキスト モードで比較
VbDatabaseCompare 2 データベースに格納されている設定に基づいて比較
InStrRev関数の戻り値
条件 InStrRev の戻り値
検索対象文字列 が zero-lengthのとき 0
検索対象文字列 が Null 値のとき Null
検索対象文字列 が zero-lengthのとき Start
検索条件文字列 が Null 値のとき Null
検索条件文字列 が見つからないとき 0
検索条件文字列 iが見つかったとき 文字列が見つかった位置
検索開始位置 > Len(検索条件文字列)のとき 0


【サンプルコード3】次のコードは【サンプルコード2】と同様、パス名からファイル名を取り出す関数の例です。
Function Get_FilleName(Temp As String)
   Dim RT As Variant
   Dim F_Name As String

   RT = InStrRev(Temp, "\")
       
      If RT > 0 And IsNull(RT) = False Then
         F_Name = Mid(Temp, RT + 1, Len(Temp) - RT)
      Else
         F_Name = ""
      End If
       
   Get_FilleName = F_Name
End Function

Sub Test()
  Debug.Print Get_FilleName("D:\Access2003\本科生管理\本科生管理2005")
End Sub



12.String 関数

【書式】String(number, character)
指定した文字コード (ASCII またはシフト JIS コード) の示す文字、または文字列の先頭文字を、指定した文字数だけ並べた文字列を返す文字列処理関数です。
指定項目 内容
number 長整数型 (Long) の値を指定します。文字をいくつ並べるのかを指定します。
character バリアント型 (Variant) の値を指定します。文字の文字コード、または文字列式を指定します。この文字列の先頭文字を number 回繰り返したものを返します。
【サンプルコード3】次のコードは0001から0100までの文字列をイミディエイトウインドウに表示します。
Sub Sample()
  Dim strTemp As String
  Dim i As Integer
  
  For i = 1 To 100
      strTemp = Lrim(Str(i))
      Debug.Print String(4 - Len(strTemp), "0") & strTemp
   Next i
   
End Sub
【解説】Str(i)は数値iを文字列iに変換します。ただし、先頭にスペースが付いています。Lrimはこのスペースを取り除いています。

ホームページに|前のページに|次のページに

CopyRight(C) 2004 cbcnet. All Rights Reserved