- 締切済み
ExcelVBAに関して
EXCELVBAで非表示にしてあるワークシートをVisibleにするよう記述していますが、たまになぜかVisibleプロパティを変更できません。となります。これは、VBEditorのプロパティウィンドウで手動でもできません。また、いったんファイルを閉じてもう一度開きなおして実行するとうまくいくことがあります。 もう1点、フォーム上のラベルの名前を初期名から変更して保存したのに、ラベル名がまた初期値(Lable1 など)になります。さらに、私のパソコンと、上司のパソコンで同時に開いてみると、上司のパソコンではラベル名が初期値になっており、私のパソコンでは変更後のラベル名になっているということが起きています。(ラベルを表示・非表示するコードを書いているのに、ラベル名が変わってしまうので、制御できません。) これはなぜなのでしょうか?
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- kumadayo
- ベストアンサー率31% (9/29)
しーと表示としーと非表示の間に実行している処理の内容が問題だと思われます。 その処理の中でイベントが発生して再帰処理になってないですか^^? 99%関係ないと思われるコードをエクセルから削除していって単純化してみることをお勧めします。
- Wendy02
- ベストアンサー率57% (3570/6232)
>オブジェクトのプロパティを変更するたびに、機能が壊れるようではプログラミングがなりたちませんので もう一度、私の #1 の私の回答を読んでみてください。 #VBA マクロでは、あまり、ワークシート自体の Visible #属性に対して、VBA 処理はしないはずです。経験的に、 #シートの基本的な属性や削除を繰り返すと、何かの拍子 #に、シート自体の機能が戻らなくなることがあります。 私は、機能が壊れるなどとは書いておりません。PC固有のメモリ上の問題なのか、Excel自体の割り当てのメモリなのか、Index 属性とオブジェクト名との整合性に狂いが生じるのか、今のところ、私は、はっきりしておりません。 >これが理由ということは、ありえないと思うのですが・・・。 質問に書いて、他人の発言を否定するなら、何か、原因だと予想するのですか? それから、はっきりさせたいのでしたら、コードをお見せください。コードなしでは、これ以上は分かりません。 私の知っている現象と同じなのか、それともそうでないのか、わかりません。オブジェクトのプロパティを変更するたびに、機能が壊れるようなことはありえないのは当然ですし、そのような発言をしておりません。 シートの一部の属性に関しては、機能が回復しないのは、現実にあるのですし、それに、Microsoftに報告されているものが全てではありません。
お礼
私のうけとりかたが間違っていたようですね。有難うございました。
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 シートのVisibleプロパティ >いったんファイルを閉じてもう一度開きなおして実行するとうまくいくことがあります。 ブックは、一般の [.xls] ですか? xlSheetHidden か xlSheetVeryHidden(シートから変更できないようにする) か、わかりませんが、ブックを一旦閉じて可能になるなら、たぶん、Open イベントのどこかに、シートやブック全体を働きかけるコードがあると考えます。そこからか、該当するコードをみないと、こちらでは分かりません。 しかし、VBAマクロでは、あまり、ワークシート自体のVisible属性に対して、VBA処理はしないはずです。経験的に、シートの基本的な属性や削除を繰り返すと、何かの拍子に、シート自体の機能が戻らなくなることがあります。もしかしたら、それが原因かもしれません。 >フォーム上のラベルの名前を初期名から変更して保存したのに、ラベル名がまた初期値(Lable1 など)になります。 ラベル名のオブジェクト名を変更したのではないでしょうか?プロパティのCaptionを変更しましたか? または、変化するものでしたら、 Private Sub UserForm_Activate() Label1.Caption = "本日は" & Format$(Date, "mm/dd") End Sub とすればどうでしょうか?
お礼
早速のお返事ありがとうございます。 ワークシートの基本的な属性や削除を繰り返すと機能が戻らなくなるというのは、Microsoftで報告されている内容でしょうか? これが理由ということは、ありえないと思うのですが・・・。(オブジェクトのプロパティを変更するたびに、機能が壊れるようではプログラミングがなりたちませんので) ワークシートは処理時にxlSheetVisibleにして、処理後にxlSheetHiddenにしています。ほとんどの場合まったく問題なく動くのですが、たまにvisibleを変更できなくなります。 ちなみにラベルの件はオブジェクト名についてのことです。
お礼
ありがとうございました。