

いつもお世話になっております。
コントロールを使用するのが初心者で、皆さんに助けられています。
ありがとうございます。
たびたびの質問で申し訳ありませんが、よろしくお願いたします。
今までは出なかったのですが、つい先ほどから、
1つのフォームをshowすると「オートメーションエラー」が
発生してしまいます。
しかし、一度、VBAのコードを開けると、エラーは発生しません。
調べては見たのですが、確実な解決法がなく、
下記の件の方はどのように解決されたのか教えていただきたいです。
http://oshiete1.watch.impress.co.jp/qa4383343.html
いくつか有効な手段では、と自分で思う事を記述したいと思います。
(1)ファイルが壊れている可能性
a.VBAを全てエクスポートしインポートしなおす
→やってみましたが、ダメでした。
b.ファイルの名前を変える
→やってみましたが、ダメでした。
(2)showの使い方がおかしい
a.現在、showで出力し、unload Meで開放している状態です。
たびたびの質問申し訳ありません。
よろしくお願いいたします。
No.3ベストアンサー
- 回答日時:
こんにちは。
>只今、ファイルを再作成し、すべてのエラーが出なくなりました!!
それは、おめでとうございます。
>VBAは1000字以上記入たくさんしているのですが、問題なのでしょうか?
ここらは、もうご承知のことだと思いますが、VBAは、VBとは違って、実際には、メモリ制限にぶつかることがあります。それで、大きなコードを書くとき、UserForm は、ローカルモジュール(オブジェクトを持っている)ですから、標準モジュール(オブジェクトを持っていない)に、逃がすように書いたほうが良いような気がします。
特に、1つのプロシージャは、あまり長く書かないほうがよいということです。(100行程度まで)パーツ・パーツでコードを作っていくということです。
また、標準モジュールも、その内容(例えば、文字列を処理する、インターネットにアクセスする)によって、モジュールを替えて、ひとつの標準モジュールの仕事は同じ系列の仕事にする、という暗黙のルールがあります。
>アドインについては、勉強不足でよくわかっていません。
アドインも本格的に勉強する、難しいです。詳しいのは、MSから出ている『プログラマーズガイド』なんていう本に出てきますが、私たちが知りたいのは古いバージョンの本にしか出てこないのです。(ブックオフなどの古本屋で、数百円で手に入ったりします。)本格的に作ると、細かな部分が、分からないことが出てきてしまいます。今のスタイルは、できるだけ、Office 97のVBAの資料を集めるとプラスになることが多いです。それ以降のものは極端に難しいです。Vista + Office 2007 でも、理屈は同じです。
>知り合いのために、ちょっと作ろうかなと思ったフォームでこんなに手こずるとは思ってもいませんでした。
私の場合は完成しなかったです。もう数年前に、掲示板ではほとんど解答ができたので、自由にできるつもりになっていたのでい。それで知り合いから仕事の依頼を請けて、しばらくやってみて、1週間では解決できないとわかったので、その時点で相手に、できない旨とお詫びを添えて連絡を入れました。今、されていることとは違うにしても、同じくUserFormが問題でした。その後、原因を見つけるのに、1年以上掛かりました。
なお、私は、だいたいは、丸3日で形にならなければ、できないにします。
何かのお役に立てれば幸です。
No.2
- 回答日時:
こんにちは。
全体的なコードの雰囲気は、アドインのようです。
> (1)多数あったコンボボックスをテキストに変更 →解決せず
> Call com01_開始処理(a,b,c) /使用するシートを表示し、マクロのみ変更可とする
この2行の関連性はありますか?テキストボックス(コンボボックス)のRowSourceは、空になっているのですか?
それと、文の最後の部分が気になりました。
>1000字以上でエラーになってしまうため、見づらくすみません。お礼もろくに書けずすみません。
ここに載せられない1000字というものも、実は、私は、削除覚悟で書いたことがあります。その時、ここに入ったけれども、それでも、かなり大きなサイズです。それは、いろんな問題が発生する可能性があります。
これについてのアドバイスとしては、まず、UserForm 自体に入れるものと、そうでないものは、きちんと区分けすることですね。それは、前回書いたメモリの配分の問題です。
ところで、実際に同じ立場の場合、経験としては、だいたい、2週間程度、いじっていて、解決しないと、その辺りを見切りだとして、最初から作り直すことをします。かなりレベルの高い問題を抱えている可能性があります。私自身が、同じように、どのようにもならないところに入り込んだことがあります。
確かに、コードを失うのはつらいのですが、このレベルになると、他人に頼るということもできないのです。原因の場所が特定できない場合、または特定できても、根本的にメモリの配分などがある場合は、やむをえないのです。ただし、同じパターンで書けば、同じハメに入ってしまうこともあるのですが。
いつもありがとうございます。
只今、ファイルを再作成し、すべてのエラーが出なくなりました!!
本当にありがとうございます。
アドインについては、勉強不足でよくわかっていません。すみません。これから勉強いたします。
開始処理は、非表示されているシートを表示させているだけなので、フォームとの関連性はありません。
コンボボックスは、InitializeではClearせず、設定しているのですが、他の設定時には、必ずClearしてから設定しています(RowSourceプロパティの設定はありません)
1000字の件は、このお礼内容欄のことでした。すみません。わかりづらく書いてしまって。。。VBAは1000字以上記入たくさんしているのですが、問題なのでしょうか?ちょっと不安になってしまいました。
知り合いのために、ちょっと作ろうかなと思ったフォームでこんなに手こずるとは思ってもいませんでした。
Wendy02様のおかげでなんとか、終了できそうです。
本当にありがとうございます。
初めて作成したフォームだったため、修正等たくさんしてしまい、それのためにファイルが壊れちゃったのかな?という気がします。
これからはWendy02様のように回答ができるように頑張ります。
本当にありがとうございました。
No.1
- 回答日時:
こんばんは。
たぶん、リンク先は役に立たないと思います。
まあ、Focus している最中に、Hide したらエラーが出るでしょうね。(^^;
>(2)showの使い方がおかしい
> a.現在、showで出力し、unload Meで開放している状態です。
前回の話で、私は、別のことばかり書いてみました。他の方も書いていたように、ソースをまず見るべきでした。私の書いたメモリのことは、そんなに的外れではないにしても、つい余計なことばかり書いてしまいました。(自分がバカみたいでした)
コードを見せていただけますか?
リンク先の質問はきまった回答がありますが、#1コードでオートメーション・エラーが出ること自体は、興味深いです。解決もなにもありません。それ自体は使わなかったということですね。
この回答への補足
こんばんは。
回答のお礼が遅れてしまい、本当にすみません。
しかも、補足の欄ですみません。
実は、問題の2002のPCが現在、使えない状況でして。。。
(PC故障ではありません。ちょっと持っていかれてしまいました)
2~3日中には、もう一度今回の現象をまとめて、
ご報告したいと思っております。
本当に、親切に教えていただいているのに申し訳ないのですが、
こんな私も見捨てずによろしくお願いいたしますm(..)m
いつもありがとうざいます。
次回はお礼の欄に書かせていただきます。
回答をいつもありがとうございます。今までの現象をまとめてみました。
1.コンボボックスに入力時強制終了
(1)多数あったコンボボックスをテキストに変更 →解決せず
(2)強制終了しないフォームをコピーして再作成 →解決(入力しても強制終了しなくなる)
2.IMEに問題ありかと思い、再度設定をZEROにして実行 →強制終了される
<問題発生>
1.(2)にて再作成をしたユーザフォームを開くと「オートメーションエラー」が発生※但し、VBAのコードを開くと発生しない
<対応考え中>
a.フォームの名前を変更 →解決せず
b.もう一度マクロを再作成 →対応中
=ソース=
フォーム:全16個
エラーのフォーム:コンボボックス2個
テキスト2個
マルチページ5個
内にテキスト9個のフレームが5つ
標準モジュール
Sub h01_納品書作成()
Call com00_名称取得(a,b,c) /使用するシート名等を取得しています。
Call com01_開始処理(a,b,c) /使用するシートを表示し、マクロのみ変更可とする
frm11.Show /問題のフォームShow
Call com02_終了処理(a,b,c) /使用するシートを非表示にし、保護
End Sub
フォーム
Private Sub UserForm_Initialize()
Call com00_名称取得 /使用するシート名等を取得しています。
Workbooks(mcr_fi).Activate
Worksheets(frm_sh).Select
'最終行・列
Call com11_最終行列検索(a,b,c) /使用するシートの最終行の取得*3
'コンボボックス設定
'スクロール
MultiPage1.Value = 0
frm11.Scroll fmScrollActionBegin, fmScrollActionBegin
'フォーカス
txtNohDate.SetFocus
End Sub
Private Sub cmdCancel_Click()
Unload Me
End Sub
1000字以上でエラーになってしまうため、見づらくすみません。お礼もろくに書けずすみません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- Visual Basic(VBA) Excel-VBAでのファイルの開き方 4 2023/02/14 11:01
- Excel(エクセル) ランダムで四択の問題を作る場合にvbaで何を学べばいいでしょうか。 1 2022/04/14 16:45
- Visual Basic(VBA) vba メモリ節約 3 2022/09/16 21:45
- Visual Basic(VBA) VBA アドインについて お詳しい方 ご教授をお願いします。 相談事項 現在以下の対応を実施した所、 1 2022/11/02 16:53
- Excel(エクセル) Excelを開くとエラーが出る 2 2022/10/03 16:13
- Excel(エクセル) 重複したデータ(空白は除く)のVBA表記について 4 2022/08/15 07:28
- Excel(エクセル) ExcelのFSO(ファイルシステムオブジェクト)について学びたいのですが。。。 5 2022/12/15 18:06
- Excel(エクセル) PDFファイルに日付を名前にして保存したい。 エクセル2019でワークシートに請求書のフォームを作り 2 2023/05/27 11:13
- Visual Basic(VBA) ユーザーフォームが立ち上がらない 2 2022/06/10 18:57
このQ&Aを見た人はこんなQ&Aも見ています
-
UserForm1.Showでエラーになります。
工学
-
UserForm1.Showでエラーになります。1
工学
-
特定のPCだけ動作しないVBAマクロがあります。その理由は?
Visual Basic(VBA)
-
-
4
エクセルでエラーが出て困っています。
Excel(エクセル)
-
5
ユーザフォーム開くとエラーになる
Excel(エクセル)
-
6
VBAでブックを非表示で開いて処理して閉じる方法
Excel(エクセル)
-
7
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
8
ExcelVBAで、ユーザーフォームを新規Bookにコピーしたい
IT・エンジニアリング
-
9
Excel VBA: UserForm.Show で実行時エラー
Visual Basic(VBA)
-
10
VBA(エクセル)で自動的にボタンをクリックさせるには
その他(プログラミング・Web制作)
-
11
VBAを何回も作り直して、容量が増えた
Excel(エクセル)
-
12
ExcelのVBA。public変数の値が消える
Visual Basic(VBA)
-
13
ユーザーフォームに入力したデータを保持する方法
Visual Basic(VBA)
-
14
ExcelVBA実行後に時々落ちる
Visual Basic(VBA)
-
15
テキストボックスのvalueとtextの違い
Visual Basic(VBA)
-
16
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
17
Vba UserFormを前面に出す方法を教えてください
Visual Basic(VBA)
-
18
Excel-VBA>コントロールをグレイアウトするには?
Excel(エクセル)
-
19
ExcelのVBAでフォームが表示されない
Excel(エクセル)
-
20
Excel VBA:フォーム←→セルのアクティブ切り替え
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
vbaでmsgboxの位置を指定
-
エクセルVBA フォームShowでオ...
-
エクセルVBAでNumLockキーの状...
-
Excel:アドイン(ThisWorkbook)...
-
Application.Runエラー(1004)
-
別シートのマクロを実行する方法
-
エクセルVBAで、ボタンの文字を...
-
エクセルのマクロボタンが編集...
-
Access終了時にマクロまたはVBA...
-
特定のシートだけ印刷はマクロ...
-
マクロの自動記録機能について
-
ウィンドウサイズ・場所のレジ...
-
InputBox内の表示について
-
access2010 コマンドまたはアク...
-
エクセルの右クリックにオートS...
-
なぜ「マクロの記録」はaccess...
-
アクセス:検索フォームボタンに...
-
マクロとモジュールの違いを教...
-
シート保護を掛けたまま並べ替...
-
オートシェイプの黄色いハンド...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
vbaでmsgboxの位置を指定
-
エクセルVBAでNumLockキーの状...
-
エクセルVBA フォームShowでオ...
-
【Excel】BeforeCloseを毎回呼...
-
VBAが得意な方 助けてください...
-
Excel:アドイン(ThisWorkbook)...
-
HULFT完了コードについて
-
ExcelのVBでタイピングゲームも...
-
アクセス2000VBA DAOをADOに書...
-
フォームを作成すると同時にイ...
-
Pic16f690でpwm信号を作る。c言...
-
VBAでフォームにおけるコマンド...
-
別シートのマクロを実行する方法
-
Application.Runエラー(1004)
-
エクセルのマクロボタンが編集...
-
Access終了時にマクロまたはVBA...
-
エクセルVBAで、ボタンの文字を...
-
シート保護を掛けたまま並べ替...
-
access2010 コマンドまたはアク...
-
マクロ 戻るボタンを押したらシ...
おすすめ情報