ユーザーフォームがクラッシュするExcel.
こんにちは-
私は先週働いていたExcelワークブックを持っていますが、働きを止めました. 私が知っている唯一の変更は、Excelテンプレートで最新versionにお金を更新していました.
私は:
Microsoft®Excel®用Microsoft®Excel®MOFLOCT365 MSO(version2109Build16.0.144204)64ビット
Windows 10
:
エディションWindows 10
home
version21h1
OSBuild19043.1165
Windowsの機能経験パック120.2212.3530.0
しかし、私のマクロが線に当たったときにExcelがクラッシュして閉じる:
UserForm1.Label1.Caption= "Test"
e
Microsoftコミュニティでの検索は数年前に似たようなエラーを示しました-その情報がまだ関連性があるが、以前に報告された問題がfm20.dllと呼ばれるかどうかわかりません. だから私は開発者/ツール/参照をチェックし、
を見つけましたExcelの開発者/ツール/参照は
を含みますMicrosoft Forms 2.0オブジェクトライブラリ
位置:
c:\windows\system32\fm20.dll
ただし、PCのどこにでもこのファイルが見つかりませんか?
VBAが機能を停止した理由は何ですか?
返信リスト(回答:6)
ユーザーフォームに問題がないが、参照ダイアログが配置されていることを示す場合でも、c:\windows\system32フォルダにfm20.dllも表示されません.
そのオブジェクトライブラリの横にあるボックスにチェックがあると仮定します.
ただし、c:\windows\syswow64フォルダ
にその名前のファイルがあります.
このスレッドをカバーする電子メールメッセージに参照するブックのコピーを私に送った場合、問題を調査します.
応答6# ->にスキップ5 #RonこんにちはDoug、
返事をありがとうございました.
はい、My Developer/Tools/refestesには、Microsoft Forms 2.0オブジェクトライブラリの横にあるチェックマークがあり、同じパスがありますが、PC上の任意の場所にFM20.dllファイルが見つかりません(...\syswow64フォルダなど)
しかし、私はあなたにExcelブックであなたに送金したくなかったので、私は単にユーザーフォームをロードし、Label1のキャプションを編集してからフォームを編集したマクロを照らす新しい空白のワークブックを作成しました. この単純化されたワークブック&マクロは正しく機能します.
それで私はExcelブックのMoneyのマイモジュールとユーザーフォームを削除し、同じテスト(単純なユーザーフォーム、Label1キャプションを編集するための単純なマクロ)を再作成し、Excelワークブックは再びクラッシュしました.
私はExcelテンプレートで新しいお金でこのテストを繰り返すつもりです. Excelテンプレートの新しいお金でシンプルなUserformのラベルキャプションを編集できる場合は、退職後のワークブックに関するものが破損しています. いまいましい
応答5# ->にスキップ4 #Ron残念ながら、はい、私の退職のブックは破損しています. VBA UserForm Testは、Excelテンプレートの新しいお金で正しく機能しました.
これは吸います. 私の退職プランナーを傷から再建するために数日の仕事があると思います. オプションを選択した新しいブックにワークシートを新しいブックにコピーすることができる場合は、オプションを選択してください.
あなたの助けをありがとう-あなたは間違いなく問題を壊れたワークブックに絞り込むのを助けました.
応答4# ->にスキップ3 #Ronいいえ-私は間違っていました-それでもクラッシュしています!
私はExcelワークシートで私の全額を再構築し、新しいユーザーフォームを作成し、そしてVBAでラベルキャプションを編集しました. 新しいワークブックの新しいユーザーフォームが正しく表示されています-問題が解決されました.
その後、ワークブックを保存して再開し、マクロを再実行し、再びワークブックを再実行しました. 私の単純なVBAマクロは次のとおりです.
USERFORM1
をロードしますlabel1.caption= "test"
userform1 show
Label1.caption= "test"の行をコメントアウトした場合、ワークブックをクラッシュさせることなく空白のUserformは正しく表示されます(デフォルトのキャプション "Label1"を使用してlabel1を表示します).
このマクロは、Excel Bookの真新しいお金で完全に一度だけ走った-それから再びExcelをクラッシュし始めました.
応答3# ->にスキップ1 #DougRobを使う
UserForm1
としてdim myformmyform= new userform1
を設定しますmyform
.label1.caption= "test"
を設定します
MyForm= Nothing
応答3# ->にスキップ2 #KERATLこれが代替構文、または単に無邪気なフォーラムタイプ(私は非常に有罪です)ですが、ただし、私はあなたの最低概念の証明で次のことを期待しているかもしれません.コードの違いがあなたの元のコードとは異なる理由でエラーが解決される可能性があるため、
userform1 show
vs
userform1.show
そしてまた
label1.caption= "test"
vs
UserForm1.Label1.Caption= "Test"
F8を歩くことで、どのコード行がクラッシュしているかを教えてください.