Rayは、可能であれば、セル内の値の「カウントアップ」をアニメーション化する方法を望んでいます。たとえば、セルB7では、値が23である可能性があります。セルE4でその値を参照し、セルE4を0から23(0、1、2、3など)までカウントアップして、各番号を表示したいとします。順番に。

Excelでこれを行う組み込みの方法はありませんが、マクロを使用してアニメーションを行うことができます。基本的に、マクロはセルB7にあるものを見つけてから、For …​ Nextループを使用して、0からB7にあるものまでの値をステップスルーする必要があります。ループの各反復中に、E4の値が変更され、ある種の遅延が発生します。

マクロの遅延部分は、マクロの動作を変更する機能を実際に提供するものです。アニメーションが機能しているように見せるためには、遅延が必要です。これがないと、E4の数値の増分が速すぎます。 Excelには、遅延を実装するための便利な方法がいくつか用意されています。たとえば、このマクロの例は、スリープ機能に依存しています。

#If VBA7 Then Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

#Else Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

#End If Private Sub Worksheet_Change(ByVal Target As Range)

Dim n As Integer     Const cellWatch As String = "$B$7"

Const cellCount As String = "$E$4"

Const msec As Long = 200 ' milliseconds     If Target.Address = cellWatch Then         Application.EnableEvents = False         Range(cellCount).Show         If IsNumeric(Target) Then             For n = 0 To Target ' skipped if Target < 0                 Range(cellCount) = n                 Sleep msec ' delay each increment             Next n         End If         Range(cellCount) = Target         Application.EnableEvents = True     End If End Sub

このコードは、ワークシートで何かが変更されるたびに実行されるように設計されているため、ThisWorksheetモジュールに追加する必要があります。コードは、変更されるセルがターゲットセル(B7)であるかどうかを確認します。そうである場合は、そこで値を取得し、セルE4にあるものを更新するFor …​ Nextループにジャンプします。スリープ機能は、この場合、E4の各更新の間に200ミリ秒を遅らせるために使用されます。

より短く、Worksheet_Changeイベントハンドラーに依存しないマクロが必要な場合は、次のことを検討してください。これは、Waitメソッドを利用してFor …​ Nextループで一時停止します:

Sub CountUp()

Dim J As Integer     For J = 0 To Range("B7").Value         Range("E4").Value = J         Application.Wait (Now + TimeValue("0:00:01"))

Next J     Range("E4").Value = Range("B7").Value End Sub

このバージョンのマクロは、セルE4への各更新の間に1秒間一時停止します。

ある種の遅延を実装するこのようなマクロを使用する場合は常に、ワークシートの応答性が低下する可能性があることに注意してください。これはその遅延によるものですが、セルE4の値がどれほど大きいかを示しています。 (値が大きいほど、総遅延が長くなります。)

注:

このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。

_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。

このヒント(13753)は、Microsoft Excel 2007、2010、2013、2016、2019、およびOffice365のExcelに適用されます。