概要

String関数は、Excel VBAで指定された文字を指定回数繰り返して生成された文字列を返す関数です。文字列の初期化やデータのフォーマット時に使用され、特定のパターンを持つ文字列を簡単に作成できます。たとえば、ダッシュで区切られた行を生成したり、スペースで埋められた特定の長さの文字列を作成する際に便利です。

構文

String(長さ, 文字)

パラメータ

  • 長さ

    繰り返す文字の数を指定します。0以上の整数でなければなりません。

  • 文字

    繰り返される文字を指定します。文字列の最初の文字のみが使用され、文字コード(整数値)も指定可能です。

戻り値

String関数は、指定された長さ分、指定した文字を繰り返した結果の文字列を返します。

説明

String関数は、指定された文字を繰り返して文字列を生成します。使用頻度の高い用途には、データの初期化、視覚的な区切り線の生成、固定長のテキストフィールドのフォーマットなどがあります。

  • 長さが0の場合、空の文字列を返します。

  • 文字が空文字の場合や、指定が整数値の場合、それぞれの使用方法に応じて異なる結果が得られます。

使用例

基本的な使用例 - 文字を繰り返す

Sub RepeatCharacter()
    Dim result As String

    result = String(10, "*")
    MsgBox result  ' 結果: ""
End Sub

この例では、アスタリスク(*)を10回繰り返して、10個のアスタリスクからなる文字列を生成しています。

ダッシュで区切られた行を生成

Sub GenerateDashedLine()
    Dim dashedLine As String

    dashedLine = String(50, "-")
    Debug.Print dashedLine  ' 結果: "--------------------------------------------------"
End Sub

この例では、50個のダッシュ(-)で構成された区切り線を生成します。

スペースで埋めた固定長の文字列を作成

Sub CreateFixedLengthString()
    Dim name As String
    Dim paddedName As String

    name = "John"
    paddedName = name & String(20 - Len(name), " ")
    MsgBox "[" & paddedName & "]"  ' 結果: "[John                ]"
End Sub

この例では、「John」という名前を固定長の20文字にするため、末尾にスペースを追加しています。

繰り返しのコードを使った文字列生成

Sub RepeatUsingAscii()
    Dim asciiString As String

    asciiString = String(5, 65)  ' ASCIIコード65は"A"
    MsgBox asciiString  ' 結果: "AAAAA"
End Sub

文字として「A」のASCIIコード(65)を指定し、5回繰り返しています。

応用例

視覚的な区切り線を使った出力整形

出力内容を視覚的に整理するための区切り線を簡単に作成します。

Sub PrintReportWithLines()
    Dim header As String
    Dim line As String

    header = "Report Title"
    line = String(30, "=")

    Debug.Print line
    Debug.Print header
    Debug.Print line
End Sub

このスクリプトでは、ヘッダーの上下に区切り線を挿入し、レポートの見た目を整えています。

注意点

  • String関数で生成される文字列の長さは、メモリ制約に依存するため、極端に長い文字列の生成には注意が必要です。

  • 文字に整数値を指定した場合、その数値はASCIIコードとして解釈されます。意図した文字が表示されるか確認する必要があります。

  • 繰り返す文字列が複数の文字からなる場合、先頭の1文字のみが使用されるため、複数文字を繰り返すには他の方法を使用する必要があります。

String関数は、文字列を簡単に繰り返し生成できる便利なツールで、定型フォーマットの出力や特定の文字パターンの作成に広く利用されています。これを利用することで、出力の視認性やデータ整形の効率を大幅に向上させることができます。