ユーザーがやる一般的な操作を知らない人のマクロ?

最近、とある Q&A サイトを見ていて気になることがあります。
 
例えば、A1:E10 の範囲内のセルに文字を入力した場合に、先頭1文字目だけを太字にするというイベントプロシージャを書くとき、どのように書くでしょうか?
 

Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Count > 1 Then
    Exit Sub
  End If
  If Target.Row < 11 And Target.Column < 6 Then
    If IsEmpty(Target.Value) Then
      Target.Font.Bold = False
    Else
      If (Not Target.HasFormula) And _
        (VarType(Target.Value) = vbString) Then
        Target.Characters(1, 1).Font.Bold = True
      Else
        Target.Font.Bold = False
      End If
    End If
  End If
End Sub

以前の日記にも書いたけど、これは素人くさい浅はかなコードです。
初めてイベントプロシージャを書く人ならともかく、常連回答者が書くコードではないと思ってます。
 

Private Sub Worksheet_Change(ByVal Target As Range)
  Dim i As Range

  For Each i In Target
    If i.Row < 11 And i.Column < 6 Then
      If IsEmpty(i.Value) Then
        i.Font.Bold = False
      Else
        If (Not i.HasFormula) And _
          (VarType(i.Value) = vbString) Then
          i.Characters(1, 1).Font.Bold = True
        Else
          i.Font.Bold = False
        End If
      End If
    End If
  Next i
End Sub

1番目よりははるかにマシですが、無駄なステップが実行されがちです。範囲外のセルへの入力/消去であってもループの中に入ってしまうので。
 

Private Sub Worksheet_Change(ByVal Target As Range)
  Dim i As Range
  Dim rngU As Range

  Set rngU = Application.Intersect(Target, Me.Range("A1:E10"))
  If Not rngU Is Nothing Then
    For Each i In rngU
      If IsEmpty(i.Value) Then
        i.Font.Bold = False
      Else
        If (Not i.HasFormula) And _
          (VarType(i.Value) = vbString) Then
          i.Characters(1, 1).Font.Bold = True
        Else
          i.Font.Bold = False
        End If
      End If
    Next i
  End If
End Sub

 
どうも、そのサイトでは、1番目と2番目ばかり目につくんです。
 
※.Excel World の 2007年4月28日 00:47 の日記をコピーしています。
http://excel.sns.fc2.com/excel/