[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『マクロボタンで、次回起動時のセルを選択』(やま)
小学生にパソコンを使用させています。「保存して終了」と表記のマクロボタンをク リックして、次の生徒と交代します。その際、指定したセル番地を「選択」された状態 にしておきたいのですが、よい方法がありますでしょうか? 現在 ボタン6=保存して終了させるボタンです。 次回起動時に、選択させておきたいセル番地=C3 です。 よろしくお願いします。
Sub ボタン5_Click()
ActiveWorkbook.Save
End Sub
< 使用 Excel:Excel2003、使用 OS:WindowsXP >
>その際 ってのは、どの際でしょう?
「保存して終了」にしたら、保存されるだけですか? それとも、一旦終了して 次の人はブックを立ち上げる所から始めるのでしょうか? それにしても、保存したブックを開いて使うのですか? そしたら、前の生徒が入力したデータがそのまま残っていそうですが。。。?
保存したブックを開いて使用するのなら Saveの前に C3セルをアクティブにしておけば良いのでは? (HANA) 2014/07/25(金) 11:27
早々にご教示ありがとうございます。
「終了」は、2種類となります。一旦終了してしまうのと、ファイルを閉じるだけとです。 計算問題をさせます。「こたえ」のみ入力して進み、最後に「パスワード」を入力すると、点数・得点など を「一覧表に保存」しています。「得点記録」「答えを消す」「保存して終了」のボタンを順次クリックし て、画面には、問題を表示させる枠のみが出るしかけです。そこで、次の生徒と交代した場合に、C3セルが 問題を表示させるべく「回数」を入力せるセル。ここを選択させた状態にしたいのですが、質問がご理解い ただけましたでしょうか?
>保存したブックを開いて使用するのなら Saveの前に C3セルをアクティブにしておけば良いのでは? これは、生徒にC3セルをクリックさせてから「保存して終了」をクリックさせれば。と言う事でしょうか。
先程から Sub セルの選択 Worksheets("回数入力").Range("C3").select End Sub 試していますが、コードを記述する箇所が悪いのか、これでは「だめ」なのかも分かっていません。
(やま) 2014/07/25(金) 12:02
>これは、生徒にC3セルをクリックさせてから「保存して終了」をクリックさせれば。と言う事でしょうか。 「保存して終了」ってマクロがあるんじゃないんですか。。。? それって↓かと思ってますが。 Sub ボタン5_Click() ActiveWorkbook.Save End Sub
そうなら、この「ActiveWorkbook.Save」の前に 「Worksheets("回数入力").Range("C3").select」 を記述してみてはどうですか?
>Sub セルの選択 をつくってみて、どの段階で実行して試していますか? セル選択自体がうまくいかないのでしょうか? それとも、再度開いた時にアクティブセルがC3以外なので、うまくいかないのでしょうか?
>「答えを消す」 から >「保存して終了」 までの間にアクティブセルが動かないなら このマクロに入れておくのが良いのかもしれませんが。 ・・・セルの状況(データ)を変更するマクロの一環として・・・。
『「保存して終了」ボタンを押すつもりが ポインタが少しずれて セルを選択してしまう事がある。』 なんて場合は、やはり「保存して終了」に組み込んでおくのが良いと思いますが。 (HANA) 2014/07/25(金) 12:11
(HANA)さん: 何度も済みません。お尋ねしたり、我流でやったりが混在しています。現在下記コードです。 これで、修正点のご教示を受けた方が良いのか?と 書きました。よろしく お願いします。
◎ C3=回数入力(ここでEnterを押して問題が表示されて、計算開始です。) その後は、答えの入力セル D14:H14 へ D28:H28 へ D42:H42 へと進ませる。(Tabキー使用) 答えの入力が終了したら、G2=パスワードの入力で、◎×や得点。判定。氏名などが「表示」される。 「得点記録」「答えを消す」「保存して終了」の各ボタンを押して終了します。(この時点ではG3=パスワー ド入れてEnterを押したセルが選択されている状態。)
Private Sub Workbook_Open() '一旦、シート保護を解除 ActiveSheet.Unprotect 'シート保護を設定(Ulのみ) ActiveSheet.Protect UserInterfaceOnly:=True
ActiveWindow.ScrollRow = 1
End Sub
Sub ボタン3_Click() Dim r As Variant If Range("G2").Value <> "" And Range("I2").Value <> "" Then r = Application.Match(Range("G2").Value, Range("T13:T44"), 0) If IsError(r) Then Exit Sub Range("T13:T44").Cells(r).End(xlToRight).Offset(, 1).Value = Range("I2").Value
End If
End Sub
Sub ボタン2_Click()
Dim r As Variant
Range("D14:H14,D28:H28,D42:H42,G2").ClearContents
End Sub Sub セルの選択()
Worksheets("回数入力").Range("C3").Select
End Sub
Sub ボタン2_Clik()
'シートを保護
Worksheets("回数入力").Protect
E nd Sub
Sub ボタン5_Click()
ActiveWorkbook.Save
End Sub
(やま) 2014/07/25(金) 13:20
確認をお願いします。
>(この時点ではG3=パスワード入れてEnterを押したセルが選択されている状態。) で、「保存して終了」を押すと Sub ボタン5_Click() ActiveWorkbook.Save End Sub が実行されるが、このままだと、パスワード入れてEnterを押したセルが選択された状態で終わってしまう。
のが問題なんですよね?
そこで、私は「ボタン5_Click」のマクロの中身を 1.C3セルをアクティブにする 2.保存する・・・・・・・・・これは現在書いてある「ActiveWorkbook.Save」 にすれば良いのじゃないかと思うのですが それではうまくいかないのですか? (HANA) 2014/07/25(金) 13:52
(HANA)さん: お手数を煩わせましたが、お蔭様で成功! しました。感謝です。
ただ、質問中のPC=Windows7 Excel2010(正規版 単体)では、ブックくを閉じて再度開いても「正常作動」 しますが、教室の古いPC=XP Excel2003 ですと、シートの保護は効いているのですが、指定セルの順番が外 れてしまいます。そして、保護したセルも、式が表示される。(でも、消したりしようとすれば、保護され ているパスワードの入力を求めて来る。)何処かに、バージョンのよる「障害箇所」が有るのでしょうか? 別の質問にすべきか? 引き続きよろしくお願いします。
(やま) 2014/07/25(金) 14:51
出来ましたか、良かったです。
>教室の古いPC=XP Excel2003 ですと、シートの保護は効いているのですが〜〜 になった後は、何かやったら正常に戻りますか? それとも、そうなってしまったらもう戻らないですか?
また、必ずそうなるのでしょうか?
>指定セルの順番 ってのは、どの様な設定ですか?
小さなサンプルブックを作り直してやってみるとどうですか? (HANA) 2014/07/25(金) 15:10
(HANA)さん:
>また、必ずそうなるのでしょうか? そうなるんです。
指定セルの順番
ってのは、どの様な設定ですか?
◎ C3=回数入力をします。 ◎ その後答えを入力するセル D14:H14 へ D28:H28 へ D42:H42 へと進ませる。(Tabキー使用) ◎ G2=パスワードを入力。以上のセルしか「触らせない」。他は、マクロボタンのクリックだけ許可。
そこで、「Ctrl+C3」 から初めて、上記「答えの入力セル」「G2」をマウスでドラッグして「シート保護」 をかけています。保護ウィンドウでは、最上段の「ロックされた範囲を選択」=「レ点」を外しています。 確か、名前の定義から、順序を指定すると「保護ができない」?と記憶していましたので。
以上の状況下ですが、よろしくお願いします。 (やま) 2014/07/25(金) 15:34
>「Ctrl+C3」 から初めて、上記「答えの入力セル」「G2」をマウスでドラッグして「シート保護」 は、Ctrlを押しながら、5つの範囲を選択して ロックのチェックを外して シートに保護をかける って手順で良いですか?
こちらではその手順でうまくいかないので。
ロックされた範囲を選択 のチェックをはずしているので、その他のセルは選択できないのですが Tabを押すと C3→G2→D14〜H14・・・の順に進んでいきます。
もしも、手順として重要なのは 保護をする前に、移動させたい順にセルを選択しておく という事なのであれば Workbook_Open で ActiveSheet.Unprotect して どのセルがアクティブであろうと(C3セルがアクティブなんだと思いますが) ActiveSheet.Protect UserInterfaceOnly:=True で保護してしまうのは問題じゃないんですか?
>Windows7 Excel2010(正規版 単体)では、ブックくを閉じて再度開いても「正常作動」 という事なので、関係ないのかもしれませんが。。。?
Excel2003で手順として重要な所を探してみて下さい。
>そして、保護したセルも、式が表示される。 という事は、「ロックされたセル範囲が選択できる状態にある」って事ですよね? 2003で一旦シートの保護を解除して 手作業で 最上段の「ロックされた範囲を選択」=「レ点」を外して保護をしてみると どうなりますか? (HANA) 2014/07/25(金) 21:26
(HANA) さん: 2014/07/25(金) 21:26
◎ 重ね重ねのご教示に感謝しております。(期限切れPCの件で、恐縮です。)
>Excel2003で手順として重要な所を探してみて下さい。
◎ >2003で一旦シートの保護を解除して 手作業で 最上段の「ロックされた範囲を選択」=「レ点」を外して保護をしてみると どうなりますか?
◎ やりなおし作業をしました。 結果=初回の作業では「パスワード入力」を求めてきます。(これは、教師の入力でOK です。) 「保存して終了」クリックで、次の生徒へと「希望通り」進めます。 ブックを閉じなけ れば、OKです。
◎ 一旦ブックを閉じますと今度の初期画面では「パスワード入力」が出てきません。 前回の報告通り「保護された状態」ではあるが、「希望通り」すすめない???
◎ 質問に記述の「コード」で、シート保護を一旦解除・・・ などは、小生の能力で はなく、Web上で調べ たのを、使している状況です。引き続きよろしくお願いします。
(やま) 2014/07/26(土) 10:44
>◎ 質問に記述の「コード」で、シート保護を一旦解除・・・ などは、小生の能力で >はなく、Web上で調べ たのを、使している状況です。引き続きよろしくお願いします。 それがどのような事をするものなのか、調べてから使われるのが良いと思います。
>初回の作業では「パスワード入力」を求めてきます。 と言う事ですが、シートの保護を解除するのに パスワードを設定しているのですか?
>ブックを閉じなければ、OKです。 でしたら、とりあえず 「Private Sub Workbook_Open」 を削除したブックを作って試してみて下さい。
保存して、終了して開いた時に、同じ症状になるかどうか。
また、それぞれのコードの内容も調べて下さい。 (HANA) 2014/07/26(土) 13:24
(HANA)さん: 2014/07/26(土) 13:24
◎ご教示のコードを削除して、新規に保存しなおして「得点記録ボタン」クリックで下記のエラーです。 古いPCで操作しました。 (ボタン3クリック)の箇所です。
「実行時エラー1004」
Range("T13:T44").Cells(r).End(xlToRight).Offset(, 1).Value = Range("I2").Value (ここが黄色)
>パスワードを設定しているのですか? はい。 生徒が勝手に「解除」しないように。
(やま) 2014/07/26(土) 14:19
>Range("T13:T44").Cells(r).End(xlToRight).Offset(, 1).Value = Range("I2").Value (ここが黄色) そりゃそうでしょう。。。
今は >教室の古いPC=XP Excel2003 ですと、シートの保護は効いているのですが、指定セルの順番が外 >れてしまいます。そして、保護したセルも、式が表示される。 の問題を探っています。
私は「Private Sub Workbook_Open」のマクロが問題を起こしているのではないかと思っています。 だから、コードが実際に何をやっているのか 「拾ってきたコードだからわからない」 ではなく、ご自身で調べて下さい。
それから、該当のコードを削除して 保存して終了→再度立ち上げ た時 >教室の古いPC=XP Excel2003 ですと〜〜 の状態になるかだけ確認して下さい。
削除したことによって その他のコードが動くか動かないかは、また別問題です。 今は、問題点を探している所ですから。 (HANA) 2014/07/26(土) 14:32
(HANA) 2014/07/26(土) 14:32
>ではなく、ご自身で調べて下さい。
再度読み返しました。「ブックを閉じるまでが、有効期間」でした。 以下は、これから作業をしてご報告し、ご教示を受けたいと思います。よろしくお願いします。 (やま) 2014/07/26(土) 14:43
「有効期間」の話ではなく (注釈がついているのでわかると思いますが) ActiveSheet.Unprotect ActiveSheet.Protect UserInterfaceOnly:=True が、それぞれ何を指示しているか?
です。
上側が '一旦、シート保護を解除 って書いてありますね。
>>パスワードを設定しているのですか? > はい。 生徒が勝手に「解除」しないように。 であれば、シート保護を解除するためには パスワードの入力が必要なハズだと思いませんか?
また、保護する際も パスワードの設定が必要だと思いませんか?
それから、手作業で保護する際は >最上段の「ロックされた範囲を選択」=「レ点」を外す と意思表示がありますが、マクロの方は >UserInterfaceOnly:=True があるだけで、それに関しての記述は無いですよね?
どうなってしまっているのでしょうね? (HANA) 2014/07/26(土) 15:31
(HANA)さん: 2014/07/26(土) 15:31
◎ 「手作業で保護する」と「マクロでの保護」が上手く(正しく)設定されていない? と言う事でしょ うか? 頭が混乱しています・・・
(やま) 2014/07/26(土) 16:11
◎ 現在「シート保護」については、一度ブックを閉じて、再度開いても「正常」に動作しました。と 喜んで、2回目を開いたら、やはり「初期のミス状態」でした。 (やま) 2014/07/26(土) 17:09
ちなみに Private Sub Workbook_Open() は、どこに書いてますか?
ThisWorkbook にありますか?
それから、保護をするときに >最上段の「ロックされた範囲を選択」=「レ点」を外す を明記してみてはどうですか?
UserInterfaceOnly:=Trueで保護した後(次の行)に ActiveSheet.EnableSelection = xlUnlockedCells (HANA) 2014/07/26(土) 21:44
(HANA)さん: 2014/07/26(土) 21:44
◎ 数日間にわたるご指導(10回もの)のお陰で「完成」となりました、ありがとうございました。
>ActiveSheet.EnableSelection = xlUnlockedCells この記述追加により、今までのエラーが解消。
◎ 最後にお尋ねをします。> xlUnlockedCells xl は何を指し? 何処が「レ点」を外す 記述ですか?
◎ 少しは、VBAの操作にも「前向き」になれるような、ご指導をしていただいたお陰です。 感謝です!
(やま) 2014/07/27(日) 10:42
ヘルプは確認しましたか? 以下、2010の場合です。2003では、確かヘルプは別にインストールが必要だったので お使いのものに入っておらず、確認できないかもしれません。 開発に使われるのなら、CDを探してインストールしておかれるのが良いと思います。
「EnableSelection」の所にカーソルを置いて[F1]キーを押してください。
何も表示されない場合 上の方にある [ ▼]虫眼鏡マーク 検索 ▼ の、最後の「▼」から 開発者用リファレンス を選んでください。
そこには Worksheet.EnableSelection プロパティ シートの選択可能範囲を設定します。 値の取得および設定が可能です。 XlEnableSelection クラスの定数を使用します。
備考
ワークシートを保護しているときにだけ、このプロパティを使用できます。 xlNoSelection はシートのすべてのセルの選択が禁止され、 xlUnlockedCells は、Locked プロパティが False のセルに限り選択が許可され、 xlNoRestrictions はどのセルの選択も許可されます。 と書いてあります。
つまり、 ActiveSheet.EnableSelection = xlNoSelection と書いてあると、どのセルもアクティブにできません。
ActiveSheet.EnableSelection = xlUnlockedCells と書いてあると、ロックされていないセル(入力可能なセル)のみアクティブにできます。
ActiveSheet.EnableSelection = xlNoRestrictions と書いてあると、どのセルもアクティブにできます。
右辺にあるのは「定数」です。 VBAを考えた人が「こういった名前を付けよう」と思ってそのようになっているものなので >xl は何を指し? 何処が「レ点」を外す 記述ですか? という考え方は、そぐわないと思います。 (HANA) 2014/07/28(月) 00:32
(HANA)さん: 2014/07/28(月) 00:32
◎ 詳細な説明文で、ご教示を頂きましたので理解できました。
2003の古いPCにもインストールして、ヘルプの表示を「確認」できました。 ありがとうございました。 (やま) 2014/07/28(月) 09:24
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.