次の方法で共有

VBA 指定されたセルに入力されたら、マクロを起動させたい

Anonymous
2014-09-23T07:31:29+00:00

◎ VBAは初心者ですが、よろしくお願いします。

説明  例として A1セルに「1」と入力すれば、他セルに、多くある有る表の中から、1回の表のデータを「呼び出し」てコピーさせています。

     貼り付けられ側の表は、枠組みのみ表示で、回数入力の時点で、当該データを読み込みます。 表= C6:G12  として、この表にデータ(数字)を表示して

     計算問題を作成します。現況でここまでは出来ているのですが、その方法は Alt+F8キーで「実行」の操作となっています。

Q     これを、A1セルに入力のタイミングで、マクロが起動して「データをコピペ」させる方法はないでしょうか?

開発者テクノロジ | Visual Basic for Applications

ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。

0 件のコメント コメントはありません

質問作成者が受け入れた回答

Anonymous
2014-09-25T04:48:31+00:00

>Sheet3(回数入力)

VBEの画面で、左側でSheet3を選択してコードの表示をして、そこにコードが入っていればOKです。

ただし、コードの提示がないので原因は分かりません。

>Private Sub Workbook_Open()

これはWorkBookのイベントハンドラですから、ThisWorkBookに記述します。

ブックが最初に開かれた時のみ機能します。

>Worksheets("回数入力").Range("C3").Select 

ここでエラーになるとしたら、多分シート保護がそのセルの選択を禁止する状態になっているとしか思えませんが?

この回答は役に立ちましたか?

0 件のコメント コメントはありません

質問作成者が受け入れた回答

Anonymous
2014-09-23T13:47:45+00:00

WorkSheet_Changeのイベントでできると思います。

VBEで、シートを選択して、コードの表示をクリックすると、コードのイベントハンドラのコードペインが出てきます。

そこで、左のドロップダウンでWorkSheetを選び、右のドロップダウンでChangeを選べば、WorkSheetChanngeのイベントハンドラができます。

イベントが発生すると、パラメータのTargetに変更されたアドレスのRangeが来ますので、そのアドレスを調べたり、変更後の値がチェックできます。

この回答は役に立ちましたか?

0 件のコメント コメントはありません

4 件の追加の回答

並べ替え方法: 最も役に立つ
  1. Anonymous
    2014-09-25T02:40:25+00:00

    ◎ 以前の質問の際に、ご教示いただきましたが「マクロとシート保護の不具合」。

     これとよく似た症状と思われます?

    ◎ 今回ご教示いただきました方法で、回数指定で「呼び出した値」が表示された時点で「マクロ起動」=成功

      ここで、生じた問題点ですが

    ◎ 「呼び出した値」の表には、 子供が操作しやすい様に、

      入力セルが「Tabキー」でD6:H14へD16:H29へD34:H44 へと進ませています。(シート保護)

      この規制が有るために、今回のものとが「バッティング」するので、操作が上手く機能しない?

    ◎ ちなみに、1回呼び出した値の問題を、終了しますと、次の生徒に交代させるために、C3セルを取得して

       Saveしています。 下記 コードですが。

    Sub 答えを消す_Click()       ・・・ 生徒がクリックして、交代する

    Dim r As Variant                             ・・・ 以下 消すセルです。

     Range("C3,D6:H14,D19:H29,D34:H44,G2").ClearContents  ・・・ 呼び出した値

    End Sub                                  ・・・ C3=回数入力 

                                            ・・・ G2=生徒番号入力で得点等表示  

     Sub ボタン5_Click()               

     Worksheets("回数入力").Range("C3").Select

    ActiveWorkbook.Save

    'シートを保護

      Worksheets("回数入力").Protect

    End Sub

    Sub 保存して終了_Click()

     Worksheets("回数入力").Range("C3").Select     ・・・ この行に 黄色のエラー表示

       ActiveWorkbook.Save

    'シートを保護

      Worksheets("回数入力").Protect

    End Sub

    ◎ 質問後の 操作で発生した疑問点ですが、 よろしくご教示ください。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  2. Anonymous
    2014-09-24T02:39:30+00:00

    y sakuda         さん:

     ◎ テスト用のファイルでは、成功しましたが、既存のファイルを修正中に「無反応」状態になりました。

      再度 お願いいたします。

     開いているBookに作成したシートは、1個だけです。(回数入力)というシート名が付けてあります。

     そこで、ご指示頂きましたように

     標準Module の下には

      Sheet1(Sheet1)

         Sheet3(回数入力) ・・・ ここに コードを記述しました

         TthisWorkbook

     ◎ テスト用ファイルと内容は同じなので、ここらのミスでしょうか? (記述するウィンドウが?)

       「回数」を入力しても、エラー表示も、なにもない「無反応」です。

     ◎ 下記は、別途質問をすべきかもしれませんが、関連してお尋ねします。

       小学生相手の「計算問題」を作成していますので、余計な箇所や「オートサム」などが

       使用されないようにと「シートには保護」をかけています。(下記)

     ◎ このコードは、どこに記述すべきなのか?

       生徒の操作用に、マクロボタンも設置しています。

    Private Sub Workbook_Open()

    '一旦、シート保護を解除

    ActiveSheet.Unprotect

    'シート保護を設定(Ulのみ)

    ActiveSheet.Protect UserInterfaceOnly:=True

     ActiveSheet.EnableSelection = xlUnlockedCells

    ActiveWindow.ScrollRow = 1

    End Sub

     以上 よろしくお願いいたします。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  3. Anonymous
    2014-09-24T01:53:20+00:00

    ◎ 早々にご教示いただき、ありがとうございました。

     詳細な説明のお陰で理解できました。 期待通りの結果が得られました。 感謝!

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません