プロが教えるわが家の防犯対策術!

Windows10でExcel2010使用。
次の動作を行うとVBAの実行が不完全なものになります。
その動作とはコード編集し保存して終了→再起動し動作確認→保存して終了です。
その後、再起動し動作確認を行うとユーザーフォーム上の特定のコマンドボタンをクリックやworksheet_Change制御下のセルクリックなどでExcelが落ちます。
ですがステップイン(F8)で実行した場合は発生しません。そして、ステップイン後、通常に実行すると問題なく動作します。
今までこんな症状は無かったので困っています。
どうかご指南頂けます様よろしくお願いします。

質問者からの補足コメント

  • ご返答感謝です。

    そこがよく分からないのです。ステップインで実行して行くとExcelは落ちませんし、ステップインで確認した後は普通に実行しても症状が出ないので。
    ただ、特定動作(コード編集→保存終了→再起動→保存終了)を行った場合、エラー処理コードに飛んでいる事は確認出来ます。
    また、コードを修正するとExcelが落ちるタイミングが変わってしまう場合もあります。
    例えば修正前はコマンドボタン1クリックだったのが修正後はコマンドボタン2で落ちると言った感じです。

    No.1の回答に寄せられた補足コメントです。 補足日時:2022/12/29 16:00
  • 会社ではExcel2010を使用していますが自宅ではExcel2019を使用しています。どちらも同じ症状でExcelが落ちます。

      補足日時:2022/12/29 16:05
  • こんばんは
    ご返答&ご検索感謝です。
    早速確認してみましたが確かに症状は似ていますね。
    エクスポート&インポートは実行済みですが同じ症状でした。また、pcに関しては会社でスペックの異なる数台で試してみたのですが同じ症状でした。
    とは言うもののコア7のメモリ16が最高なのですが…

    No.3の回答に寄せられた補足コメントです。 補足日時:2022/12/29 21:40
  • エクスポート&インポートの結果
    症状は改善されませんでした。

      補足日時:2022/12/29 22:33
  • 起動時のデータベース、シフト作成両ブックとのやり取りインスタンス生成部分のコードを一旦全て停止したのですが症状が改善しません。

    No.6の回答に寄せられた補足コメントです。 補足日時:2022/12/30 15:30

A 回答 (7件)

連投すみません


>☆vbmodelessは使用しています
vbmodeless表示後にVBA実行でMsgboxなどUIを表示するコードを追加したりしていませんか・・はっきり覚えていませんがvbmodelessに関しては不具合や制約がありますので調べてみてください
処理に困るかも知れませんがvbModalで事象が発生するかなどの検証する必要があるかも知れませんね

>今までこんな症状は無かったので困っています。
何か変更したことがあるのだと思いますが・・更新などの問題で
ブックファイルが不具合を抱えたなら、VBAコードの問題では無いと思いますのでVBAモジュールのエクスポート・インポートだけでなくブック自体を新規ブックに移すかな(ファイルのコピーではなく)既にされたかもしれませんね
    • good
    • 0
この回答へのお礼

ありがとうございます。本当に感謝です。

ご指摘頂いた件なども踏まえて新規ブックで作り始めた所です。完成してまだ症状が出る様ならまた皆さんに助けを求めるかもしれません(汗)
本当にありがとうございました。
それでは失礼します。

お礼日時:2022/12/30 19:37

こんにちは #5です 


オブジェクト・コントロール数も多くActivate挙動も少し複雑ですね
頓珍漢ついでに(既にされているかと思いますが想像で)#5+で
ShowメソッドのvbModelessを使用しない
RefEditコントロールを使用しない(vbModelessで使用すると即4)
クラスのインスタンス コンストラクタ・デストラクタを確認

挙動を分ける為の処理については
データベースブックはCSVなど(データ)として メインブック起動時などにブック内のシートに取得しデータベース閉じてから使う
必要に応じて書き込む時はAppendモードなどで出力する
(データベースブックをExcelブックとして扱わない)

シフト作成ブックをVBAで扱う場合 別プロセス(インスタンス)で開く
Dim xlApp As Excel.Application
Set xlApp = CreateObject("Excel.Application") 'オブジェクト生成
xlApp.Workbooks.Open ・・・
(明示的に開放する)

#5のリンク先サイトのコードはお礼が付きましたのでPrivate 属性に変更します
この回答への補足あり
    • good
    • 0
この回答へのお礼

ご返答ありがとうございます

現状ですが
☆vbmodelessは使用していますがRefeditは使用していません。
☆データブックはご指摘通りCSVにしておりませんが起動時にシートに転機しすぐに閉じています。
☆オープンステートメントに関しては全く気にしておりませんでした。早速試してみます。
☆クラスモジュールに関しても勉強不足ですのでご指摘箇所の確認してみます。
☆シフト作成ブックは完成したシフト表のみ起動時に転記しすぐに閉じていますが明示的開放試してみます。

とても参考になります。
まだまだ改善出来そうな箇所がありひとまず安心しました。
ありがとうございます。

お礼日時:2022/12/30 15:14

こんばんは


処理の内容やコードが解らないのでかなり頓珍漢な回答かも知れません

VBA
F8で問題なく ボタンなどからの実行で不具合があると言うことから 
実行ブックにスレッドが戻らず落ちるのでは無いでしょうか・・
オブジェクトやインスタンスが正しく終了しているか確認してみる
他のブックやアプリケーション、Windowなどを操作した後に
DoEvents
ThisWorkbook.Activate 
見たいにするのはどうでしょう
AppActivate
UserFormのLoad、UnLoadの方法も検討する必要があるかも知れません

共通
参照設定に参照不可が存在しているようであれば、チェックを外してください(再設定もしくは正しく参照)

手作業
特定動作を手作業で行っているのでしたら、単純にBookファイルに不具合がある可能性を踏まえて 取り敢えず 新しいブックに書き替える(移す)のが良いと思います

新しいブックに書き替える(移す)・・
ブックの規模が解らないので VBAコードです 
フォルダを作ったり削除するコードやVBEを操作する処理が含まれていますので参照設定やセキュリティ設定を行う必要があります
ご確認の上、コピーブックなどで 自己責任でお使いください
https://ideone.com/XGUIFH
    • good
    • 0
この回答へのお礼

ご返答感謝です
エクスポート&インポートは少なくとも2度実行しましたが症状は改善されませんでした。
qchan様の指摘されているシートActivateのタイミングでも落ちているので気になってはおります。
その当たりを見直してみます。
アドバイスありがとうございます。

お礼日時:2022/12/30 06:42

こんばんは。



特定のPCだけでしたら、Excel本体の不具合の可能性もあるかと思いますが、複数のPCで同じ様な症状が起きるのでしたら、ファイルがおかしくなって
いるか、マクロのコードのどちらかが問題かと思われます。
それで、エクスポート&インポートでも変わらないのでしたら、マクロの
コードが原因かも知れません。

コードが表示されていないので、何とも回答も難しいですが、
worksheet_Change内のプロシージャ内で、セルを変更する様な処理は
されていないでしょうか? 無限ループに近い形になっているとか?
きちんと、Application.EnableEvents = Falseや、Trueを適切に入れられて
いて、当然の処理との事でしたら、スルーして下さい。
    • good
    • 0
この回答へのお礼

ご返答感謝です。
コードのアップはエラー箇所が特定出来ていない為控えますが、vbaの概要を申しますと
目的は生産計画表を簡単に作成する事でユーザーフォームを2個とそれに付随するコントロールを400個程使用しております。ブックはメインとなるコードを記述している生産計画入出力用と、参照用の製品データベースブック、シフト表作成ブックがあります。シフト作成ブックもVBAが組んでありますがコードが競合する様な事は無いです。
ユーザーフォーム1は1週間分の生産計画を入力する様になっており生産週→生産機→生産期間→生産機種の順に選択します。それぞれクラスモジュールで制御しコマンドボタンを使用しています。
その後、機種毎の総生産数と日毎の生産時間をテキストボックスに入力すると生産予定数、生産残数、必要生産時間等を自動計算します。(この時、シートを1枚使用し裏で自動計算しています)。生産機1台の1週間分の計画が出来ましたら作業者配置表に計画を転記します。これを生産機28台分繰り返します。計画が完成しましたら作業者配置様シートに移行しユーザーフォーム2で作業者を割り振っていきます。(シフト表作成ブック参照)ユーザーフォーム2で落ちた事は無いのでこちらの説明は省きます。

確かにWorksheet_Change内でも落ちています。無限ループに陥らないようには気を付けてはおりますがもう一度確認してみます。
こうして文章に起こしてみると客観的に考えられる気がします。
長文になってしまい申し訳ありません。
アドバイスありがとうございます。

お礼日時:2022/12/30 06:27

こんばんは。



解決するか分かりませんが、コードをアップするのは、難しいでしょうか?

似た様な症状で検索して、下記がありますが、コードをエクスポートして、新ブックにインポートして、症状が改善するか?とか。

●VBAユーザーフォーム:処理中にエクセルが落ちる現象について
https://detail.chiebukuro.yahoo.co.jp/qa/questio …
この回答への補足あり
    • good
    • 0
この回答へのお礼

ありがとうございました。
エクスポート&インポートもう一度挑戦してみたいと思います。

お礼日時:2022/12/29 21:44

変数や引数も確認してください。


おそらく違う値だから、結果が変わるんです。
よくあります。
思い込みは全部排除して、1つ1つ確実に確認しながら
やってみてください。
必ずどこかに違いがあるはずです。
    • good
    • 0
この回答へのお礼

ありがとうございました。
やってみますね。

お礼日時:2022/12/29 21:42

>ステップイン(F8)で実行した場合は発生しません


エラー処理のコードが不完全とか?
この回答への補足あり
    • good
    • 0

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