質問:

列Dの有効性リストからの選択は、番号に置き換えられます。 XL9以降でのみ動作します。

回答:

以下のコードをThisWorkbookモジュールに配置します。

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Column <> 4 Then Exit Sub

Application.EnableEvents = False

Target.Value = WorksheetFunction.VLookup(Target.Value, Range("A1:B12"), 2, 0)

Application.EnableEvents = True

End Sub