相互変換式の開発(Microsoft Excel)
ジェレミーは、A1とC1の2つのセルに基づく問題を提起しました。これらのセルは、それぞれインチとミリメートルを含むように設計されています。
ジェレミーは、誰かがA1に値を入力し、それがC1でミリメートルに変換される方法を望んでいます。逆に、C1に値を入力すると、A1でインチに変換されます。
もちろん、変換を行うことは本当の問題ではありません。問題は、誰かがA1に値を入力すると、その値がそのセルにある可能性のある数式を上書きし、セルC1に入力された後続の値が、以前に上書きされたA1で必要な変換を行わないことを意味します。
これに取り組むには、いくつかの異なる方法があります。ワークシートのデザインを拡張してさらに2つのセルを含めることを気にしない場合は、それらのセルを厳密に入力に使用し、セルA1とC1を厳密に出力に使用できます。入力セルの1つには変換する値を含めることができ、もう1つには入力値の測定単位(たとえば、インチまたはmm)を含めることができます。
もちろん、実際に2つのセルに制限したい場合は、マクロを使用して実際の変換を行う必要があります。セル値が変更されるたびにトリガーされるワークシートイベントを使用できます。イベントハンドラーは、変更されるセルがA1かC1かを確認できます。次のマクロは、これがどのように機能するかの例を示しています。
Private Sub Worksheet_Change(ByVal Target As Range) Application.EnableEvents = False With ActiveSheet If Target = .[A1] Then .[C1].Value = .[A1].Value * 25.4 ElseIf Target = .[C1] Then .[A1].Value = .[C1].Value / 25.4 End If End With Application.EnableEvents = True End Sub
セルA1またはC1に数式を含める必要がないことに注意してください。数式はマクロ自体にあります。セルA1に変更がある場合(インチはユーザーが入力します)、セルC1の値はマクロによって変更されます。同様に、セルC1に変更がある場合(ミリメートルはユーザーが入力します)、セルA1の値はマクロによって変更されます。
A1またはC1以外の他のセルの変更は、マクロによって無視されます。
注:
このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。
_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。
このヒント(3277)は、Microsoft Excel 97、2000、2002、および2003に適用されます。Excel(Excel 2007以降)のリボンインターフェイス用のこのヒントのバージョンは、次の場所にあります。
link逆数変換式の開発。