以前の記事「【VB.NET】コントロールのIMEモードを設定する 」に関連した話題です。
DataGridViewを利用している場合、列毎にIMEモードを制御したいことがあります。
今回は、その方法について説明します。

セルを編集する前にIMEモードを変更しておく必要があります。
フォーカスを受け取った時点でIMEモードを変更すれば良いと思いますので、CellEnterイベントで制御を行います。

以下、サンプル。
Private Sub DataGridView1_CellEnter(ByVal sender As Object, _
ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) _
Handles DataGridView1.CellEnter

Dim dgv As DataGridView = CType(sender, DataGridView)
Dim Header As String = dgv.Columns(e.ColumnIndex).HeaderText
'列名で判断する
If "氏名".Equals(Header) OrElse "住所".Equals(Header) THEN
DataGridView1.ImeMode = Windows.Forms.ImeMode.Hiragana
ElseIf "氏名(カナ)".Equals(Header) Then
DataGridView1.ImeMode = Windows.Forms.ImeMode.KatakanaHalf
ElseIf "郵便番号".Equals(Header) Then
DataGridView1.ImeMode = Windows.Forms.ImeMode.Alpha
Else
DataGridView1.ImeMode = Windows.Forms.ImeMode.Disable
End If
End Sub


上記のサンプルでは、列の表示順序が変わらない場合や列が動的に追加、削除された場合でもコードを変更する必要はありません。

もし、列が固定であるならば、列番号を使っても構いません。
列番号で指定する場合、上記のサンプルの列が"氏名"、"氏名(カナ)"、"郵便番号"、"住所"の順であった場合、以下のようになります。

Private Sub DataGridView1_CellEnter(ByVal sender As Object, _
ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) _
Handles DataGridView1.CellEnter
'列番号で判断する
Select Case e.ColumnIndex
Case 0, 3
DataGridView1.ImeMode = Windows.Forms.ImeMode.Hiragana
Case 1
DataGridView1.ImeMode = Windows.Forms.ImeMode.Alpha
Case 2
DataGridView1.ImeMode = Windows.Forms.ImeMode.KatakanaHalf
Case Else
DataGridView1.ImeMode = Windows.Forms.ImeMode.Disable
End Select
End Sub

【補足事項】
・フォーカスを得たセルの列によってDataGridView全体の入力モードを切り替えています。
・IMEモードについては、以前の記事「【VB.NET】コントロールのIMEモードを設定する 」を参照して下さい。