質問編集履歴

1

タイトル、記事を内容に沿って修正。追記項目を追加。

2022/12/28 12:35

投稿

ataru2222
ataru2222

スコア272

test CHANGED
@@ -1 +1 @@
1
- VBAでUserform起動時に落ちる
1
+ VBAでUserform起動時に落ちる、IF判定が正しくできない時がある
test CHANGED
@@ -28,10 +28,10 @@
28
28
  ・Userformを起動する際にNewして起動するように変更 ←変わらず落ちる
29
29
  https://teratail.com/questions/70370
30
30
 
31
- ・新たなBookにUserformをインポートして作り直した。 ←New テスト中
31
+ ・新たなBookにUserformをインポートして作り直した。 ←変わらず落ちる
32
32
  https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q14228025529
33
33
 
34
- 現在新しい、Bookを作ってエクスポートとインポートを繰り返し、作り直してテストしております。少し軽くなったような気がしていますが、これでもダメだった時はどうしていいのか?作り直すしかないのか不安です。
34
+ 現在新しい、Bookを作ってエクスポートとインポートを繰り返し、作り直してテストしております。少し軽くなったような気がしていますが、これでもダメだった時はどうしていいのか?.Net等で作り直すしかないのか不安です。
35
35
 
36
36
  このような状態になった時は何が起きているのでしょうか?
37
37
  このような事にならないためにもVBAはメモリを意識して書かないといけないのか?
@@ -43,4 +43,23 @@
43
43
  Excel2016
44
44
  メモリ4Gと8Gの両方のPCが存在するが、どちらかで落ちる現象を確認したら、どちらのPCでも同じ操作をすると同じ落ち方をします。
45
45
 
46
+ ### 追記
47
+ 落ちる原因と対策
48
+ 1、シートの保護
49
+ シートに保護をかけているのですが
50
+ ```
51
+ 'シートの保護を有効にする(VBAのみシート内操作が可能)
52
+ ThisWorkbook.Worksheets("Sheet1").Protect UserInterfaceOnly:=True
53
+ ThisWorkbook.Worksheets("Sheet1").Cells(2, 1).Value = "AAA"
54
+ ```
55
+ 値を入れようとすると落ちる時がある。(ステップ実行で確認)
56
+ 値を入れる前に保護を全て一度外し、最後にまたかけるという処理に変更
46
57
 
58
+ 2、モジュール内に関数の書き方を間違えていて使えないコードがある(使っていない関数)
59
+ 朝一PC起動後に開いたら
60
+ 「DLLが正しく読み込めませんでした。」
61
+ とみたことのないエラーメッセージが出現。(関数を読み込む行)
62
+ しかしデバッグで進めるので、ステップ実行するとこの位置で確実に落ちる。
63
+ このモジュールを読み込む際に何かあるのか?と思い、普段やらないデバッグのVBAProjectのコンパイルを実行すると、使っていない関数があり、IsDateの書き方を間違えていて「引数が不正です」と表示される箇所がありました。これを一時的に読み込んでしまっているのか?と思いコメントアウトすると、落ちる行が落ちなくなりました。
64
+
65
+