ジェレミーは、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トレーニングのソースです。

このヒント(9581)は、Microsoft Excel 2007、2010、2013、2016、2019、およびOffice 365のExcelに適用されます。Excelの古いメニューインターフェイス用のこのヒントのバージョンは、次の場所にあります。