EXCEL VBA 指定した文字列を繰り返し表示する。簡易グラフの作成・指定文字を並べて表示(String関数)
EXCEL VBA 指定した文字列を繰り返し表示する。簡易グラフの作成・指定文字を並べて表示(String関数)
今回説明するのは、String関数の利用方法を説明いたします。String関数は、特定の文字を指定した数を同一のセルに並べて表示する事ができます。同じ文字(1字)を繰り返して表示させる際にString関数を利用します。それでは、サンプルプログラムを交えて順番に説明いたします。
●【String関数については、下記を参照して下さい】:参考(Microsoft社 様)
https://docs.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/string-function
● String関数を利用するには、下記の通りに設定を行います。
【構文】
● String(数,文字)
引数 | 必須/省略 | 説明(内容) |
---|---|---|
数(Number) | 必須 | 文字を並べる数を指定します。 |
文字(Character) | 必須 | 文字を指定します(1文字)ASCIIコードで文字を指定する事も出来ます。 |
【使用例】:関数のサンプル
【プログラム】① 【文字を使用した場合】
1 2 3 4 5 6 7 8 9 10 11 12 13 |
' ' Sub String関数00() ' サンプル 文字を使用した場合 Dim Buf As String Buf = String(5, "@") MsgBox Buf End Sub ' |
【プログラム】② 【アスキーコードを使用した場合】
1 2 3 4 5 6 7 8 9 10 11 12 |
' ' Sub String関数00B() ' サンプル アスキーコードを使用した場合 Dim Buf As String Buf = String(3, 64) 'ASCIIコードを使用した場合 ( 64は、”@”アットマーク) MsgBox Buf End Sub ' |
【注意点】
String関数の引数(数:number)に負(マイナス)の値を指定するとエラーが発生します。
EXCEL VBA String関数を使った簡易横棒グラフの作成
下記のサンプルプログラムは、String関数を使った簡易横棒グラフを作成します。A列には名前・B列には点数が登録されています。この点数に応じてC列に簡易横棒グラフを作成します。C列の簡易横棒グラフは。10点に対して1個”■”が表示するように設定されています。
【プログラムの流れ】
① B列の最終行を取得します。
② 2行目から最終行まで繰り返します。
③ String関数を使いB列の点数に応じてC列に”■”を表示させます。
【プログラム実行条件】
・A列に氏名・B列に点数を入力します。(0~100)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
' ' Sub String関数01() Dim I, lRow As Long lRow = Cells(Rows.Count, "B").End(xlUp).Row 'B列の最終行を取得します。 For I = 2 To lRow '2行目から最終行まで繰り返します。 Cells(I, "C") = String(Int(Cells(I, "B") / 10), "■") 'String関数を使いB列の点数に応じてC列に”■”を表示させます。 Next I End Sub ' |
(画面クリックして拡大)
EXCEL VBA String関数を使った簡易横棒グラフの作成(+プラス:ーマイナス)
下記のサンプルプログラムは、String関数を使った簡易横棒グラフを作成します。今回作成する簡易棒グラフは、数値がプラスの場合は”■”を表示し、マイナスの場合は、”▲”を表示するサンプルプログラムです。数値に応じて+ー10に対して記号が一個表示するように設定しています。
【プログラムの流れ】
① B列の最終行を取得します。
② 2行目から最終行まで繰り返します。
③ Bがプラスの数値の場合は、C列に”■”を表示させます。マイナスの数値の場合は、C列に”▲”を数値の大きさに応じで表示させます。
【プログラム実行条件】
・B列に数値を入力します。(-200~200の間)目安
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
' ' Sub String関数02() '+―に応じて記号を分ける Dim I, lRow As Long lRow = Cells(Rows.Count, "B").End(xlUp).Row 'B列の最終行を取得します。 For I = 2 To lRow '2行目から最終行まで繰り返します。 If Cells(I, "B") > 0 Then Cells(I, "C") = String(Int(Cells(I, "B") / 10), "■") 'String関数を使いB列の点数に応じてC列に”■”を表示させます。 Else Cells(I, "C") = String(Int(Abs(Cells(I, "B")) / 10), "▲") 'String関数を使いB列の点数に応じてC列に”■”を表示させます End If Next I End Sub ' ' |
(画面クリックして拡大)
また、VBAに関するテクニックや便利な手法などをこのサイトに掲載していきますので、定期的に参照していただけると幸いです。