[[20200523102548]] 『繰り返し処理とCalculate』(かにうし) ページの最後に飛ぶ

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

 

『繰り返し処理とCalculate』(かにうし)

 たし算のフラッシュカードを作っています。
 「問題」シートにあるボタンを押すと、「解答」シートを
 表示して、「問題」シートに戻ります。
 「Calculate」を入れると思ったように動きません。
 どうしたらいいのでしょうか?
 ご教示願います。

 Sub テスト()
    Dim i
    For i = 1 To 3
        Range("b2:Fn2").Calculate
        Application.Wait [Now() + "00:00:02"]
        Sheets("解答").Select
        Application.Wait [Now() + "00:00:01"]
        Sheets("問題").Select
    Next i
 End Sub

< 使用 Excel:Office365、使用 OS:Windows10 >


 > 「Calculate」を入れると思ったように動きません。

 どうなるんですか?

 何の為に 「Calculate」が必要なのですか?

(半平太) 2020/05/23(土) 12:03


 半平太さん、ありがとうございます。
 >どうなるんですか?
 Calculateを入れると、「解答」シートが表示されません。

 > 何の為に 「Calculate」が必要なのですか?
「問題」シートには、b2セルに「=int(rand()*9+1)」の式が、
 fn2セルに「=int(rand()*(10-b2)+1」の式があるので、
  あるので、繰り返すごとに新しい式を表示させたいからです。

 質問が不明確で申し訳ありませんがよろしくお願いします。
(かにうし) 2020/05/23(土) 15:26

 > >どうなるんですか?
 > Calculateを入れると、「解答」シートが表示されません。

 同じ環境でテストしてみましたが、その現象は再現しませんでした。(Office365、Win10)

 お役に立てず、すみません。

(半平太) 2020/05/23(土) 15:37


 半平太さん、ありがとうございました。
 構文には問題なしということが分かっただけでも助かりました。

(かにうし) 2020/05/23(土) 17:04


 問題と解答で、そんなに見栄えが変わるんでしょうか?

 大差なければ、問題シートそのものの見かけを解答シートと同じように変化させれば、
 切り替えしなくとも、なんとか対応できると思うんですけども。

 その方が目にも優しい気がしますが。

(半平太) 2020/05/23(土) 17:11


 半平太さん、何度もありがとうございます。
 >その方が目にも優しい気がしますが。

 ご助言を受けて、同じシートに解答を表示させるようにしました。(c23セル)
 1度目は思う通りできたのですが、2度目以降はc23セルが表示されませんでした。
 何か根本的なミスがあるのでしょうか?

Sub テスト2()

    Dim i
    For i = 1 To 3

        Range("b2:d2").Calculate
        Application.Wait [Now() + "00:00:02"]
        Range("c23").Select
        Application.Wait [Now() + "00:00:01"]
        Range("a1").Select
    Next i

End Sub

(かにうし) 2020/05/23(土) 17:33


 仕様の全貌が分かってないですが、

 C23セルが正解の場合、実際にC23を見せる必要はなく、
 A1セルを「表面上」C23と同じ表示にすればいい、と言う考え方をしました。

 つまり、Valueを変更しないし、表示位置もA1から移動しない。
 なので目に優しい(のでは?)

 Sub テスト2()
     Dim i, NFL, ansTXT, tgtCel As Range

     Set tgtCel = Range("A1")
     NFL = tgtCel.NumberFormatLocal 'オリジナルの書式を覚えて置く

     For i = 1 To 3
         ansTXT = Range("c23").Text
         Range("b2:d2").Calculate
         Application.Wait [Now() + "00:00:02"]
         tgtCel.NumberFormatLocal = ansTXT   '見かけだけC23にする
         Application.Wait [Now() + "00:00:01"]
         tgtCel.NumberFormatLocal = NFL      'オリジナルの書式に戻す
     Next i
 End Sub

 問題と解答の平仄が合っているか、こちらでは分からないです。
 アイデアだけです。

(半平太) 2020/05/23(土) 18:14


 半平太さん、本当にありがとうございました。
 自己解決しました。(新しいファイルで作り直しました。)
 半平太さんから教わった「目に優しい」方法について、
 これから試していきたいと思います。
(かにうし) 2020/05/23(土) 19:13

コメント返信:

[ 一覧(最新更新順) ]


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