プロが教える店舗&オフィスのセキュリティ対策術

たとえば、

dim i,j,k as integer
for i=1 to 10
for j=1 to 1000
for k=1 to 100
cells(i*1000+j,k).value=worksheets(i).cells(j,k).value
next k
next j
next i

みたいなものを実行させると、転記する行がずれることってありますでしょうか。
F8キーを押し続けて一行ずつ実行させたときには問題ないのですが、普通に実行させたときと結果が異なります。
本当はもっと複雑なプログラムを走らせているのですが、決まって同じセルでおかしな値が入力されてしまうのです。
同じような経験をされた方とか、解決方法をご存じの方、よろしくお願いします。

A 回答 (2件)

ステップインで問題ないうことは、処理が間に合っていないと思われます。


想定ですが、ご例示の変数i,jのバリアント型が気になる(処理速度が落ちる)のですべてInteger型でお試し下さい。
    • good
    • 1
この回答へのお礼

 変数の型宣言、同じ型なら一括でできるものと思ってました。
 一つ一つを整数型で宣言して試したところ、ステップインと同じ、期待通りの転記がなされるようになりました。処理速度の向上も実感できました。変数の型で変わるものなのですね。
 ありがとうございました。

お礼日時:2012/03/10 20:06

> F8キーを押し続けて一行ずつ実行させたときには問題ないのですが


10×1000×100=100万ですよね。ホントに全部をステップ実行させた?

#1さんがおっしゃっているのは
dim i,j,k as integer
と書いたら
dim i as variant,j as variant, k as integer
と書いたのと同じなのでダメ。

dim i as integer, j as integer, k as integer
ということですよ。
    • good
    • 3
この回答へのお礼

>10×1000×100=100万ですよね。ホントに全部をステップ実行させた?
毎回決まって同じところで不具合が生じていたので、その直前の箇所からステップ実行させました。

if i=8 and j=5000 then
msgbox "もうすぐ"
end if

を挟んで、以降をステップで、というやり方です。
型宣言の解説、ありがとうございました。

お礼日時:2012/03/10 20:13

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A