- ベストアンサー
VBAのfor...next構文で i = A to Z としたい。
VBAでfor...next構文で通常 for i = 1 to 100 などとしますが、それをA~Zまでとする場合どのようにすればよいでしょうか?
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
#1です。 ごめんなさい。先のマクロに致命的なミスがありました。 正しくは Dim c as String For i = 0 To 25 c = Chr(i + 65) です。お詫びして訂正します。 さて c = Chr(i + 65) の解説ですが、 Chr は、与えられた文字コードに該当する文字を返す関数です。 半角大文字の「A」のコードは65です。 「i」は0から25までの値をとりますので、「i+65」とするわけです。 ちなみに、 Dim c as String For i = 65 To 90 c = Chr(i) としても良いでしょう。
その他の回答 (3)
- wolv
- ベストアンサー率37% (376/1001)
文字には、コンピュータの中で数字が割り当てられています。半角文字の場合はたいてい”アスキーコード”がつかわれています。 Aは65, Bは66...のようになっています。 Chrは、整数を渡すと、(その数をアスキーコードとみなして)、対応する文字を返す関数なので、forでiを0から使えば、i+65 はAに対応する数字になります。 Dim c as String For i = Asc("A") To Asc("Z") c = Chr(i) : としたほうがわかりやすいかも。
- neKo_deux
- ベストアンサー率44% (5541/12319)
文字には文字コードが割り当てられていますので、そちらを利用します。 IT用語辞典 e-Words : ASCII文字コード http://e-words.jp/p/r-ascii.html でいうと、A(65)~Z(90)まで整数iをループさせ、Chr関数で整数iのASCIIコードを文字に変換して文字列cに格納すると言う処理です。
for i = 1 to 100 の「i」は、Integer型と決まっていますので、文字型である「A~Z」にはできません。 Dim c as String For i = 0 To 2 c = Chr(i + 65) として、「i」のかわりに「c」を使うのでは駄目なのでしょうか?
補足
有難う御座います。文字列が使えないことは分かりました。 Dim c as String For i = 0 To 2 c = Chr(i + 65) c = Chr(i + 65) この意味が分からないので教えて下さい。
お礼
有難う御座います。大変分かり易いご説明有難う御座いました。