データの分析、グラフ作成、および通信のためのツールを備えた Microsoft 表計算ソフトウェアのファミリ。
”シートタブをクリックした”ことを検出するイベントというのはVBAでは公開されていないと思います。
このブラウザーはサポートされなくなりました。
Microsoft Edge にアップグレードすると、最新の機能、セキュリティ更新プログラム、およびテクニカル サポートを利用できます。
Excelのシートを表示したままでシートタブをクリックしても、クリックが無視されてそのシートが表示されないようにすることはできるでしょうか。
「問」というシートと「答」というシートの2つのシートがある練習問題というExcelブックを作成しています。「問」というシートと「答」というシートはあらかじめ表示されていて、「問」のシートにあるすべての問題の回答を入力するまでは「答」というシートを開くことができないようにして、1問でも入力していない状態で「答」というシートを開こうとすると「・・番の問題が未入力です」というように警告するようにしたいのです。「答」というシートが最初は表示されていなくて全問入力したら表示される仕様では、1問でも残っていて気付かないと生徒が戸惑いますので。一度「答」というシートが表示されると採点されて以後答えの変更ができなくなります。
VBAを使って「問」というシートのPrivate Sub Worksheet_Deactivate()で検出して元のシートに戻すようにしてみたのですが答えが一瞬見えてしまうだけでなく、「答」シートのPrivate Sub Worksheet_Activate()が起動されて処理されてしまいます。
よろしくお願いします。
データの分析、グラフ作成、および通信のためのツールを備えた Microsoft 表計算ソフトウェアのファミリ。
ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。
”シートタブをクリックした”ことを検出するイベントというのはVBAでは公開されていないと思います。
コードはまだなくどのようなプログラムにするかをテスト的に試している予備確認の段階ですので質問の後半の部分のコードについてはとりあえず無視してください。
ボタンを使わず通常のExcelシートに備わっているものだけでできないかということでシートタブによる方法を模索しています。
シートを非表示にしないでこのシートタブをクリックしても、クリックが無視されてそのシートが表示されないようにすることはできないということでしょうか。
実際には切り替わる処理が発生していても見かけ上切り替わらないのであれば構いません。
はっきり言って、Excelに詳しい人なら何をやっても見ようと思えばみることができます。
(例えば別のExcelからそのファイルを開いて、シート名を洗い出し、新ブックにコピーしてしまう等)
基本的には、答えシートを非表示(VeryHidden)にしてしまい、ブックにも保護を掛けてしまうのがよろしいかと思います。
>「答」シートのPrivate Sub Worksheet_Activate()が起動されて処理されてしまいます。
このあたりはどういうコードを書かれているかにより違いますので、何ともなんですが、凝った自動処理をするのではなく、採点ボタンと言ったものを作っておき、採点ボタンを押すと、答えが表示され、答えの変更を不能にするなどの処理にした方がよろしいかと思います。
VBAの質問の場合、ピンポイントで済む場合もありますが、基本的には困っておられることが見ている人に理解できるようなサンプルコードを提示しないとまともな回答は得られません。
>答えが一瞬見えてしまうだけでなく
これ自体は処理中 Application.ScreenUpdating=Falseにしてしまえば済むはずですが、そういう問題ではなく、
>「答」シートのPrivate Sub Worksheet_Activate()が起動されて処理されてしまいます。
の方プログラム全体の設計が間違っているとしか言いようがありません。ですから、ボタンでも用意したらと言う最初の話になります。