Home » エクセルマクロ・Excel VBAの使い方 » VBA関数 » aからzまでFor~Nextループ-Chr関数・Asc関数

aからzまでFor~Nextループ-Chr関数・Asc関数

対象:Excel2010, Excel2013, Windows版Excel2016

「excel vba for a to z」
という検索キーワードに気付きました。

Excel VBAのFor~Next文で「aからzまで」という条件を指定するには、どうすればいいのか探していらしたのでしょう。

もしかしたら
  Dim i As String
  For i = "a" To "z"
といったコードを試したのかもしれませんが、For~Next文のカウンター変数に文字列型は指定できませんから、これでは「型が一致しません。」というコンパイルエラーが出てしまいます。

[スポンサードリンク]

直値を使ったaからzまでのFor~Nextループ

具体的に何をしたかったのかは不明ですけれど、以下のSubプロシージャが参考になるでしょう。
Sub aからzまでループ_直値()
 Dim i As Long
 For i = 97 To 122
  Debug.Print i; vbTab; Chr(i)
 Next i
End Sub

実行するとVBEのイミディエイトウィンドウに、カウンター変数iの値と、Chr関数で変換されたアルファベットが出力されます。

アルファベット「a」のASCIIコード「97」から、「z」の「122」までという条件で、
  For i = 97 To 122
「aからzまで」というFor~Nextループになります。

小文字の「aからzまで」ではなく大文字の「AからZまで」というFor~Nextループにしたければ、
  For i = 97 To 122
の条件を
  For i = 65 To 90
にしてください。

Asc関数を使ったaからzまでのFor~Nextループ

上述の
  For i = 97 To 122
の意味がわかったら、以下のようにVBAのAsc関数を使ったFor~Nextループも確認しましょう。
Sub aからzまでループ_Asc関数()
 Dim i As Long
 For i = Asc("a") To Asc("z")
  Debug.Print i; vbTab; Chr(i)
 Next i
End Sub

結果は先のSubプロシージャと同じです。

こちらを「AからZまで」というFor~Nextループにしたければ、
 For i = Asc("a") To Asc("z")
の部分を
 For i = Asc("A") To Asc("Z")
とするだけです。

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » VBA関数 » aからzまでFor~Nextループ-Chr関数・Asc関数

「VBA関数」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.