こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

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

投稿日時 - 2004-02-18 14:42:30

QNo.782981

e-l

暇なときに回答ください

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

#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)

としても良いでしょう。

投稿日時 - 2004-02-18 15:21:32

お礼

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

投稿日時 - 2004-02-18 15:31:53

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.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)
  :

としたほうがわかりやすいかも。

投稿日時 - 2004-02-18 15:19:22

ANo.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

投稿日時 - 2004-02-18 15:17:14

for i = 1 to 100
の「i」は、Integer型と決まっていますので、文字型である「A~Z」にはできません。

Dim c as String
For i = 0 To 2
  c = Chr(i + 65)

として、「i」のかわりに「c」を使うのでは駄目なのでしょうか?

投稿日時 - 2004-02-18 14:51:21

補足

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

c = Chr(i + 65)
この意味が分からないので教えて下さい。

投稿日時 - 2004-02-18 15:00:11