こちらの識者の方々にはいつもお世話になっています。
VBAの質問です。
環境は下記になります。
OS=windows7 pro 64bit
Office=Excel2010(14.0.7128.5000)
・やりたいこと
下記コードにてF6:F35の範囲の文字列を全角に変換することができるようになりましたが、
別の範囲で別の処理を追加したい場合はどのように記述すればよいのでしょうか?
F6:F35=半角を全角にする
H6:J35=全角を半角にする
という処理をしたいです。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Range
If Intersect(Target, Range("F6:F35")) Is Nothing Then Exit Sub
Application.EnableEvents = False
For Each r In Target
r.Value = StrConv(r.Value, vbWide)
Next r
Application.EnableEvents = True
End Sub
質問に不備不足等ございましたらご指摘ください。
ご面倒お掛けしますがよろしくお願いします。
自分で書いたコードを読む気がないのですか?
If Intersect(Target, Range("F6:F35")) Is Nothing Then Exit Sub
というコードでF6:F35以外は処理をしないようにしているのだから,ここをなんとかしなければいけませんよね。例えば
If not Intersect(Target, Range("F6:F35")) Is Nothing Then
'F6:F35に対する処理
elseIf not Intersect(Target, Range("H6:J35")) Is Nothing Then
'H6:J35に対する処理
end if
のようにすれば必要な処理はどちらかになって,それ以外の場合は何もしないようになります。
そして「F6:F35に対する処理」は今までと同じです。
Application.EnableEvents = False
For Each r In Target
r.Value = StrConv(r.Value, vbWide)
Next r
Application.EnableEvents = True
でいいでしょう。
それから「H6:J35に対する処理」は全角を半角にするのだから,vbNarrowを使って
Application.EnableEvents = False
For Each r In Target
r.Value = StrConv(r.Value, vbNarrow)
Next r
Application.EnableEvents = True
でいいでしょう。
お礼
できました! ありがとうございます!