[[20140922094502]] 『マクロボタンでの操作』(やま) ページの最後に飛ぶ

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

 

『マクロボタンでの操作』(やま)

 ◎ この学校で指導を受けて出来たファイルの操作に、下記のような事を追加するのは
 可能でしょうか?

 完成しているファイルです。暗算での計算ですので、問題数字を表示で開始としたい。
 下記セルには、下段の表から「呼び出して貼り付ける表(枠のみ)」があり、そこへ
 C3セルに「回数」を入れて「問題呼び出し」のマクロ(Alt+F8で実行)で「問題の数 
 字」が貼り付けられます。

 D6:H13   1番から 5番 枠のみの表  
 D18:H27  6番から10番  おなじ   (この表が1回分)
 D32:H41 11番から20番  おなじ

 ◎ そして、下段には「呼び出される表」があります。(20回分も作成したい)
 D73:H80    C72 セルには 「1」回数を表示    (現状は6回分まで)
 D85:H91
 D99:H108

 D114:H121   C113セルには 「2」回数を表示
 D126:H135
 D140:H149

 ◎ この様な状況で、次の「マクロボタン11」=「計算開始 」ををクリック すれば
 C3セルに入力された「回数」によって、「当該問題の呼び出し」と「タイマー開始」を
 起動させることに、追加記述ができるでしょうか? 

 Sub ボタン11_Click()

  Range("A1").Value = Now + TimeValue("00:03:00")
    Application.OnTime Range("A1").Value, "セルの選択"

End Sub

 Sub タイマー開始()
 Range("A1").Value = Now + TimeValue("00:03:00")
    Application.OnTime Range("A1").Value, "セルの選択"
    Application.OnTime Range("A1").Value, "セルの選択", , False
   End Sub

Sub セルの選択()

     MsgBox "計 算 や め"
     Worksheets("回数入力").Activate
     Range("G2").Activate

 End Sub
Sub 問題呼出し()

Select Case Range("C3").Value

 Case 1: Range("D73:H80").Copy Range("D6:H13")
         Range("D85:H94").Copy Range("D18:H27")
         Range("D99:H108").Copy Range("D32:H41")

Case 2: Range("D114:H121").Copy Range("D6:H13")

         Range("D126:H135").Copy Range("D18:H27")
         Range("D140:H149").Copy Range("D32:H41")

 End Select

End Sub

 ◎ 新規に、「回数確認」などの「マクロボタン」を作成しなけれダメなのか?
 以上について、よろしくご教授をお願いします。

< 使用 アプリ:やま、使用 OS:WindowsXP >


 全体の配置が等間隔であれば(41行間隔?)

 If Range("C3").Value >= 1 And Range("C3").Value <= 最終問題番号 Then
     Range(最初の位置a).Offset( ( Range("C3").Value - 1) * 41 ).Copy Range(コピー先a)
     Range(最初の位置b).Offset( ( Range("C3").Value - 1) * 41 ).Copy Range(コピー先b)
     Range(最初の位置c).Offset( ( Range("C3").Value - 1) * 41 ).Copy Range(コピー先c)
 End If

 のようにしてどうでしょうか。

(Mook) 2014/09/22(月) 13:03


 (Mook)さん 2014/09/22(月) 13:03

 ◎ やはり、便利な方法があるのですね。ありがとうございます。
 当方の所作ミスでしょうが現状は 結果=エラー400 (Microsoft VisualBasic for Application)でした。
 ◎ 確認の為、下記に「表」について記します。

 ◎ コピー元の表 第1回(以下同じ配列です)◎ 貼り付けられる表
   72行目   問題番号  (1番 から 5番)   5行目 問題番号
    73-80行目 問題表示            6-13  問題表示(貼り付けるセル)
  81        答えの入力           14   答えの入力セル    
  82    判定欄             15   判定のセル 
  83    スペース            16 オートサム欄(白色で見えない)

  84目  問題番号  (6番 から 10番)  17   問題番号
  85-94 問題表示             18-27  問題表示(貼り付けるセル)

   95     答えの入力            28   答えの入力セル
  96   判定欄              29   判定のセル
  97      スペース                          30  オートサム欄(白色で見えない)

  98   問題番号  (11番 から 20番) 31   問題番号

    99-108 問題表示                     32-41   問題表示(貼り付けるセル)
    109     答えの入力            42   答えの入力セル   
    110    判定欄              43   判定のセル
    111    スペース             44 オートサム欄(白色で見えない)
                       45-71  判定する 級 などの 表
  310  最終行 第6回の判定欄

 ◎ 問題呼び出し() の所に記述しましたが?  コード です。
  

 Sub 問題呼出し()   (ThisWokbook)

If Range("C3").Value >= 1 And Range("C3").Value <= 310 Then

 Range(72).Offset((Range("C3").Value - 1) * 40).Copy Range(5)
 Range(84).Offset((Range("C3").Value - 1) * 40).Copy Range(17)
 Range(98).Offset((Range("C3").Value - 1) * 40).Copy Range(31)

End If
End Sub

 ◎ 回数ごとの「表」自体は等間隔に表示していますが、これで、何処かに不具合が
 あるのですおうか?   よろしく お願いします。
          
(やま) 2014/09/22(月) 16:01

 Range(72) といった指定はありませんよ。
 Range の中は文字列か Cellsによる位置指定ですので、基本は無視しないでください。

 310 は行数ではなく番号です。310問作るなら現行でよいですが。

 データは40行ごとなのですか?
 例示は41行ごとに見えますが。

 いずれにせよ、形を真似るのも良いですが、何をするコードなのかを理解して、
 ご自身の意図した内容であることを納得したコードにしてください。
(Mook) 2014/09/22(月) 16:34

 (Mook)さん 2014/09/22(月) 16:34

 ◎ できました! お陰様で、これならば、楽に20回の問題も作成できますね。

 Sub 問題呼出し()

If Range("C3").Value >= 1 And Range("C3").Value <= 6 Then

 Range("D73:H80").Offset((Range("C3").Value - 1) * 40).Copy Range("D6:H13")
 Range("D85:H94").Offset((Range("C3").Value - 1) * 40).Copy Range("D18:H27")
 Range("D99:H108").Offset((Range("C3").Value - 1) * 40).Copy Range("D32:H41")

End If
End Sub
(やま) 2014/09/22(月) 17:19


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.