VBAを使用して数字の1と入力したら自動で01となるようにしてみた!!

イメージ

以下手順
1.VBE画面を起動
 ・Altキーを押しながら[F11]キーを押します。
 ・今回はSheet1を選択

2.オブジェクト,プロシージャ選択
 オブジェクトをWorksheet、プロシージャはChangeを選択

3, コード記載
 Private Sub Worksheet_Change(ByVal Target As Range)

  If (Target.Address = “$A$1”) Then
   Application.EnableEvents = False
   Range(“A1”).Value = Format(Range(“A1”).Value, “’00”)
   Application.EnableEvents = True
  End If

 End Sub


ソース解説


Private Sub Worksheet_Change(ByVal Target As Range)

シート内のセルが変更された際に呼び出されるプロシージャです。
下記はイベント呼び出しのタイミングのイメージです。
「セルの編集状態から右のセルに動かす」という流れを例にイベント呼び出しのタイミングが分かるはずです。

イメージ

セル編集状態


If (Target.Address = “$A$1”) Then

Target.Addressにはターゲットとなるセルを指定します。
今回の場合は「セルA1が編集されたら」
if文の条件を満たすことになります。


Application.EnableEvents = False
Application.EnableEvents = True

Application.EnableEventsの解説は同サイトの「Application.EnableEventsを教えて・・・」を参照


Range(“A1”).Value = Format(Range(“A1”).Value, “’00”)

言葉にすると
対象となる値(数値)が1桁の場合は10桁目に0をつけます。
下記のイメージはFormat関数の引数に関しての説明です。

Format関数

※1 シングルクォート付加理由
   シングルクォートがない場合、数値型と判断され、1と入力されても01とはならず、
   そのまま1と表示されます。
   シングルクォートを付加した場合、文字列型の扱いとなり01と表示されます。