- ベストアンサー
エクセルVBAの自動変換機能?
エクセルVBAをwebで検索しながらプログラムしている初心者です。 VBEで入力していると変数名などの大文字・小文字を自動変換してくれる機能があると思いますが,そのことでの質問です。 いつもFor~Nextのループ処理を使う時,変数"a"とするのですが(For a=0 to 7 ~Next a),それが入力の最中突然"A"に変換されました。すると,そのExcel内のすべてのVBAの変数"a"が"A"に,Cells(r,c)がcells(r,c)になりました。 大文字・小文字で入力し直しても,勝手に変換されてしまいます。 プログラム自体は支障はなく動いているのですが,理由が判らず気持ち悪いです。どうしてこうなったのか,どうしたら直るのかご教授お願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
Dim Cells と宣言してみましたか? 一度宣言したら、その宣言文は消しても良いです。
その他の回答 (3)
- nattocurry
- ベストアンサー率31% (587/1853)
cellsに関しては、過去に一度、 Dim cells と宣言したことはありませんか? 改めて、 Dim Cells と宣言し直せば、Cellsがcellsに勝手に変換されることはなくなります。
補足
ご回答ありがとうございます。 宣言文をあまり理解していないため一切使用してません。 逆にまったく宣言していないことがいけないのでしょうか・・
- imogasi
- ベストアンサー率27% (4737/17069)
Sub test01() Dim A For A = 1 To 10 Next i End Sub (意味のないコードですが辛抱して) Dim のAと ForNextのAを色々変えて見てください。 Dim の変数定義が優先されるのが判ります。 これはこれで私には、納得できます。
お礼
ご回答ありがとうございます。 宣言文,お勉強します。。
補足
ご回答ありがとうございます。 宣言文をあまり理解していないため一切使用してません。 なのに・・・
- laputart
- ベストアンサー率34% (288/843)
Dim A As integer と宣言している場合は 変数a は自動的にAに変換されます その逆も真 宣言していない場合は、A =123 として 次に a= a+1 とすると後から使った方に統一されるようです。
お礼
素早いご対応ありがとうございます。1番乗り回答ということでポイント発行させていただきました。
補足
ご回答ありがとうございます。 宣言文をあまり理解していないため使用してません。また,入力が面倒臭い(^^;ため大文字も使用しないのです。 なのに・・・
お礼
2度目のご回答ありがとうございます。 仰る方法で直りましたっ!"A"も"cells"も直りました! 「一度宣言したら,その宣言文は消しても良い」・・眼からウロコです。 『何故なったのか?』の疑問は残りますが,自分の入力ミスがないとは言い切れませんので追求しないことにします(^^; お陰様でスッキリしました。ありがとうございます。