Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


6097 / 13646 ツリー ←次へ | 前へ→

【47206】ステップインで実行すると結果が変わる 翠川 水面 07/3/5(月) 14:25 質問[未読]
【47213】Re:ステップインで実行すると結果が変わる Kein 07/3/5(月) 15:11 発言[未読]
【47218】お礼と状態説明の補足 翠川 水面 07/3/5(月) 15:29 発言[未読]
【47223】Re:お礼と状態説明の補足 Kein 07/3/5(月) 16:18 発言[未読]
【47232】Re:お礼と状態説明の補足 翠川 水面 07/3/5(月) 18:16 お礼[未読]
【47247】Re:お礼と状態説明の補足 Jaka 07/3/6(火) 10:38 発言[未読]

【47206】ステップインで実行すると結果が変わる
質問  翠川 水面  - 07/3/5(月) 14:25 -

引用なし
パスワード
   デバッグのために、ステップインで実行しながら動作を確認していますが、問題としているバグが、ステップインの場合だと出てこないということは考えられますでしょうか。

具体的には、リストボックスのlistindexプロパティの制御なのですが、コードでいったんリストの一番上の項目を指定するようにlistindexプロパティを0にしても、実行するとなぜか2つ目の項目や3つ目の項目が指定されたりしてしまうのです。

この原因を究明するために、ステップインで実行してみるのですが、この場合同じことが起こらず、思惑通りに常に1つ目の項目を指定してくれます。

ステップインで実行した場合とそうでない場合で、このように実行の結果が変わることというのはあるのでしょうか。もちろん間違いなくステップインは最初から実行しているはずなのですが・・・

ちなみにexcelのバージョンは2002です。

【47213】Re:ステップインで実行すると結果が変わる
発言  Kein  - 07/3/5(月) 15:11 -

引用なし
パスワード
   こちらはExcel2000ですが、テストしても再現しませんね。
対処法として「いったんlistindexプロパティを -1」にしてから、
さらに 0 にするコードを追加してみたら、どうでしょーか ?
原因が分からないので、ダメ元ということで。

【47218】お礼と状態説明の補足
発言  翠川 水面  - 07/3/5(月) 15:29 -

引用なし
パスワード
   ▼Kein さん:

早速のお返事ありがとうございます。
実際はかなり長いコードですので、何か他の部分が干渉しているという可能性も充分考えられるように思います・・・実際当方、リストボックスを本格的に使うのも初めてで、とてもexcelのバグだと決め付けられないのが現状です。

スピンボタンのvalueが変化すると、リストボックスの中身が更新されて、.listindex = 0で、いったんリストボックスの指定を一番上に戻す、という部分なのです。これでくりくりいじると、なぜか指定が二番目とか三番目になってしまいます。

でも、ステップインでいくと、問題なくいくんですね。

だから、もちろんこの当該のトラブルを解決したいことはたしかなんですが、ステップインの実行と、普通の実行で、なにか実行結果を変えるような本質的な違いがあるのならば、まずそれを聞いて考え直してみようかと思っていたところなのです。違うマシンの、バージョンが違うエクセルで試してみても、同じことが起こったので、なにか見落としていることがありそうなのですが・・・

ともあれ、お返事ありがとうございました。

【47223】Re:お礼と状態説明の補足
発言  Kein  - 07/3/5(月) 16:18 -

引用なし
パスワード
   >ステップインの実行と、普通の実行で、なにか実行結果を変えるような本質的な違い
長い間いくつかのQ&A掲示板に拘わってきたので、たしかにそのような現象の報告を
見た記憶はあります。でも、はっきりした原因とそれを基にした対応を回答していた
人は、いなかったように思います。もしそうした回答があれば、資料としての価値がある
と判断してテキストに落として保存していたはずですが、残念ながらそれはありません。
そーするとやはり、バグである可能性が大きいのでしょうね。バグであればユーザーが
直せるはずがありませんから、"妥協できそうな範囲の対処法"を、いろいろと考える
ことになります。例えば ListBox を止めて ComboBox にしたらどうか ? とか
先頭のリストにタイトルを設定しているのなら、それを末尾に持っていって
ListBox1.ListIndex = ListBox.ListCount - 1 というようにするとか・・。
ま、個人的にはユーザーフォームそのものを止めて、昔ながらのDialogSheetを
使おうとするでしょうけど・・。

【47232】Re:お礼と状態説明の補足
お礼  翠川 水面  - 07/3/5(月) 18:16 -

引用なし
パスワード
   ▼Kein さん:

 丁寧なお返事ありがとうございます。VBAって、この手のバグはけっこう頻繁にあるものなんでしょうか?(汗)仕事で本格的に使うことになりそうなので、いささか心配です・・・

 フォーム自体諦めるというのも確かに一手ですね。インスパイアされた気がしますので、またがんばってみようと思います。ありがとうございました。

【47247】Re:お礼と状態説明の補足
発言  Jaka  - 07/3/6(火) 10:38 -

引用なし
パスワード
   解決策ではありませんが、なんとなく感じたこと。

>listindexプロパティを0
これを指定するだけで、チェンジイベントとが発生しますが、
その辺は大丈夫なのでしょうか?
なんとなく思っただけですから、返答はいりません。

6097 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free