[[20161106181715]] 『ActiveXコントロールの値が消えない』(aki) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『ActiveXコントロールの値が消えない』(aki)

「警告を表示して全てのマクロを無効にする」
の設定にして、マクロ有効ブックを開くと、
シートに貼り付けたActiveXコントロールのテキストボックスの
値が、残ってしまいます。
マクロを全て有効にすれば、消えますが、
セキュリティ的にNGです。
どうすれば良いでしょうか?

シートには終了ボタンがあって、
それがクリックされたイベントプロシージャに
Application.Quitが書かれています。
その前に、
Textbox1.Value = ""としても、閉じるときは消えているようで、
次に開くときには消えていません。
この学校で前にどなたかが書いているのを思い出して、
直後にDoEventsを書いてみましたがダメでした。

終了するときにどのように書けばいいのでしょうか?

< 使用 アプリ:Excel 2007 2010、使用 OS:Windows7 >


 >Application.Quitが書かれています。 
 >その前に、 
 >Textbox1.Value = ""としても、閉じるときは消えているようで、 

 Textbox1.Value = "" としたら、 次に「ブックを保存(Save)」をやり、
 それから Application.Quit にしたらどうですか?

(半平太) 2016/11/06(日) 18:36


あっ!すみません....>_<
指摘して頂いて気付きましたが、元のコードには、
Textbox1.Value = ""の後に
ThisWorkbook.Save
Application.Quit
ThisWorkbook.Closeが書かれてあります。
この場合で、消えない現象が起きています。

(aki) 2016/11/06(日) 18:48


 うーん、現象再現手順を示して頂かないと分からないです。 m(__)m

(半平太) 2016/11/06(日) 20:15


分かり辛い文章でごめんなさい(ToT)
1)Excelのオプションを「警告を表示して、全てのマクロを無効にする」にする
  (開く度に、都度マクロを有効化するオプションにする)
2)シートにActiveXコントロールのテキストボックス(Textbox1), 
   コマンドボタン(CommandButton1)を挿入
3)CommandButton1のクリック時イベントに下記コードを書く
   Textbox1.Value = ""
   ThisWorkbook.Save
   Application.Quit
   ThisWorkbook.Clise
4)マクロ有効ブック(xlsm)として保存
5)ブックを開いて、Textbox1に手入力で文字を適当入力
6)CommandButton1をクリック
7)保存確認せずに閉じられるので、再度ブックを開く
8)マクロを無効化してあるので、有効化にするダイアログ(Excel2007)や、
   バー(Excel 2010)が表示されている。この状態で、
   Textbox1に消去したはずの文字が表示されている
9)有効化にすると、文字は消える
   (特に、開くときに消去するようなコードは書いていない)   
このような手順で再現出来ましたが、いかかでしょうか?(/ _ ; )
(aki) 2016/11/06(日) 20:35

ThisWorkbook.Cliseは
ThisWorkbook.Closeの単なる入力ミスです(/ _ ; )
(aki) 2016/11/06(日) 20:55

 現象、再現しました。

 ・・で、私の場合ですが、(XL2010)

 ファイル→エクセルのオプション → セキュリティセンター →
 セキュリティセンターの設定 → 信頼済みドキュメント   →

 □信頼済みドキュメントを無効にする(D)
 ↑
 ここのチェックを外して置けば、2回目からこの現象は起きなくなります。

(半平太) 2016/11/06(日) 22:05


半平太さん
確かに2回目以降は表示されなくなりました!
ありがとうございました!(^^)/

ということは、やはり
VBA自体が間違っている(通っていない)訳では無いんですね!
んー、ちょっと残ってるのが気持ち悪いですが、
Excelの仕様なら1回目は仕方ないと思って目をつむります!(p_-)
(aki) 2016/11/06(日) 23:03


 なるほど、確かに気持ち悪いですね。

 多分、描画が間に合っていないのだと思います。

 私の場合、DoEventsを2回入れたら、
 くだんのチェックが入っていたとしても、1回目から残らなくなっています。

 Private Sub CommandButton1_Click()
    TextBox1.Value = ""
    DoEvents
    DoEvents
    ThisWorkbook.Save
    Application.Quit
    ThisWorkbook.Close
 End Sub

(半平太) 2016/11/06(日) 23:34


半平太さん
わ〜、こんなわがまま(?)にも付き合って頂き、
本当にありがとうございました(ToT)/~~~
私の環境(Excel2010 Windows7, 10)でも、1回目に開いた時から
表示が消えておりました!

>描画が間に合ってない
なるなるほどほどです!!だから、値として残っている訳ではないから、
有効にしたときは、すぐ消えたんですね!

さっきまで自分でも調べつつ
With TextBox1

  .Vakue = ""
  .Activate
  .Text = ""
End With
とか頑張ってましたが、ダメでした( T_T)\(^-^ )
DoEventsを同じ文を2回挟むとは思いつかなかったです。。。
私、初めてDoEventsが役に立つ所見られました♪(*^^)o∀*∀o(^^*)♪

気持ちよく寝られそうです!
ありがとうございました!

(aki) 2016/11/07(月) 00:20


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.