Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


8532 / 13644 ツリー ←次へ | 前へ→

【32429】Auto_Openで変数に設定した値が消えます... *suzu* 05/12/14(水) 17:43 質問[未読]
【32430】Re:Auto_Openで変数に設定した値が消えます... ichinose 05/12/14(水) 17:56 発言[未読]
【32745】ご助言いただいた皆様 へ *suzu* 05/12/21(水) 15:16 お礼[未読]
【32436】Re:Auto_Openで変数に設定した値が消えます... 井上治 05/12/14(水) 20:27 発言[未読]
【32439】Re:Auto_Openで変数に設定した値が消えます... Kein 05/12/14(水) 22:30 回答[未読]

【32429】Auto_Openで変数に設定した値が消えます...
質問  *suzu* E-MAIL  - 05/12/14(水) 17:43 -

引用なし
パスワード
   いつもお世話になっています。*suzu*と申します。
タイトルの件で質問致します。

Auto_Open で変数 intDataCnt に設定した値が
他の Function で中を覗いてみると、
0(ゼロ)になってしまっています。
intDataCnt の設定直後は、設定した値が入っています。
intDataCnt は、Public で宣言してあります。

Auto_Open で設定する以外、値を設定する箇所はほかにありません。
同じ名前の変数が複数宣言されているということもありません。

何か原因がございましたら、ご教示お願い致します...

【32430】Re:Auto_Openで変数に設定した値が消えま...
発言  ichinose  - 05/12/14(水) 17:56 -

引用なし
パスワード
   ▼*suzu* さん:
こんばんは。

>いつもお世話になっています。*suzu*と申します。
>タイトルの件で質問致します。
>
>Auto_Open で変数 intDataCnt に設定した値が
>他の Function で中を覗いてみると、
>0(ゼロ)になってしまっています。
>intDataCnt の設定直後は、設定した値が入っています。
>intDataCnt は、Public で宣言してあります。
>
>Auto_Open で設定する以外、値を設定する箇所はほかにありません。
>同じ名前の変数が複数宣言されているということもありません。
>

この*suzu*さんの投稿では、私のPCで

*suzu*さんが悩んでおられる内容が再現できません。

もう少し具体的に説明してください。

Auto_Open内でintDataCntをどのように記述し、

又、

>Function で中を覗いてみると

の中も公開してください。

【32436】Re:Auto_Openで変数に設定した値が消えま...
発言  井上治 E-MAILWEB  - 05/12/14(水) 20:27 -

引用なし
パスワード
   第一に、モジュールの先頭に
Option Explicit
は書いてありますか?

次に、
>Auto_Open で変数 intDataCnt に設定した値が
>他の Function で中を覗いてみると、
のタイミングですが、Auto_Openの動作中でないと保証はされません。
つまり、全てのプロシージャがEnd Sub(End Function)で抜けた後は
モジュール変数でも保持されているという保証はありません。

コードの提示がないままで思いつくのはこの位です。

【32439】Re:Auto_Openで変数に設定した値が消えま...
回答  Kein  - 05/12/14(水) 22:30 -

引用なし
パスワード
   変数へ格納した値の保存が不安定と感じるなら、確実に値を保存できる他の方法を
考えてもよいと思います。その場合、セルに入力するのが一般的でしょうけど、
簡単にクリアできる点が心配と思う人も多いので、WorkbookのDocumentPropatyに
保存する方法でも良いでしょう。例えば

ThisWorkbook.Comments = "12345"

とするだけです。
ただしコメントの値は全て文字列になるので、読み出すときは数値に変換してやる
必要があります。即ち

Dim intDataCnt As Long

intDataCnt = CLng(ThisWorkbook.Comments)

とか

intDataCnt = Val(ThisWorkbook.Comments)

などとします。

【32745】ご助言いただいた皆様 へ
お礼  *suzu* E-MAIL  - 05/12/21(水) 15:16 -

引用なし
パスワード
   まずは返信が遅くなってしまったこと、お詫びいたします。

提示した現象の原因は、
マクロ実行途中でコードエディタ上で
停止ボタンを押してマクロを停止したことにより、
その後再度エクセル側で処理を続行するため、
処理起動するためのボタンをクリックしても、
設定した値が解放されてしまっていたために発生したようです。

だらだらと書いて判りづらいですね... スミマセン(汗)

ご助言いただいた皆様、ありがとうございました。

8532 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free