[[20140725102620]] 『マクロボタンで、次回起動時のセルを選択』(やま) ページの最後に飛ぶ

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

 

『マクロボタンで、次回起動時のセルを選択』(やま)

 小学生にパソコンを使用させています。「保存して終了」と表記のマクロボタンをク
 リックして、次の生徒と交代します。その際、指定したセル番地を「選択」された状態 
 にしておきたいのですが、よい方法がありますでしょうか?
 現在 ボタン6=保存して終了させるボタンです。
 次回起動時に、選択させておきたいセル番地=C3 です。 よろしくお願いします。

 Sub ボタン5_Click()

  ActiveWorkbook.Save

 End Sub

< 使用 Excel:Excel2003、使用 OS:WindowsXP >


 >その際
 ってのは、どの際でしょう?

 「保存して終了」にしたら、保存されるだけですか?
 それとも、一旦終了して 次の人はブックを立ち上げる所から始めるのでしょうか?
 それにしても、保存したブックを開いて使うのですか?
 そしたら、前の生徒が入力したデータがそのまま残っていそうですが。。。?

 保存したブックを開いて使用するのなら
 Saveの前に C3セルをアクティブにしておけば良いのでは?
  
(HANA) 2014/07/25(金) 11:27

(HANA)さん:
 早々にご教示ありがとうございます。

 「終了」は、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


 追加報告: (やま) 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.