• ベストアンサー

VBAのfor...next構文で i = A to Z としたい。

VBAでfor...next構文で通常  for i = 1 to 100 などとしますが、それをA~Zまでとする場合どのようにすればよいでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
noname#148473
noname#148473
回答No.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) としても良いでしょう。

e-l
質問者

お礼

有難う御座います。大変分かり易いご説明有難う御座いました。

その他の回答 (3)

  • wolv
  • ベストアンサー率37% (376/1001)
回答No.3

文字には、コンピュータの中で数字が割り当てられています。半角文字の場合はたいてい”アスキーコード”がつかわれています。 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)
回答No.2

文字には文字コードが割り当てられていますので、そちらを利用します。 IT用語辞典 e-Words : ASCII文字コード http://e-words.jp/p/r-ascii.html でいうと、A(65)~Z(90)まで整数iをループさせ、Chr関数で整数iのASCIIコードを文字に変換して文字列cに格納すると言う処理です。

参考URL:
http://e-words.jp/p/r-ascii.html
noname#148473
noname#148473
回答No.1

for i = 1 to 100 の「i」は、Integer型と決まっていますので、文字型である「A~Z」にはできません。 Dim c as String For i = 0 To 2   c = Chr(i + 65) として、「i」のかわりに「c」を使うのでは駄目なのでしょうか?

e-l
質問者

補足

有難う御座います。文字列が使えないことは分かりました。 Dim c as String For i = 0 To 2   c = Chr(i + 65) c = Chr(i + 65) この意味が分からないので教えて下さい。

関連するQ&A