VBAについて教えてください。 以前有識者の方にアクティブシートを全て半角にするコードをご教授頂きました。(関数は除く) ただ、上司にもう少し処理時間を早く出来ないかと言われたので
VBAについて教えてください。 以前有識者の方にアクティブシートを全て半角にするコードをご教授頂きました。(関数は除く) ただ、上司にもう少し処理時間を早く出来ないかと言われたので 処理時間をもっと早めるためには範囲を狭めれば良いのかと思い、 B列からQ列までの範囲に限定して(必要なのはこの範囲です)半角処理を行おうと自力で色々調べながらやってみたのですが上手くいきませんでした。 ①B列からQ列に処理範囲を限定した下記コードよりも半角処理の早いコード ②アクティブシート全体を半角処理範囲とした下記コードよりも処理の早いコード ①②いずれかを教えて頂くことは可能でしょうか。 ※可能であれば②の方が嬉しいです。 以下現在のコードです。 Sub アクティブシート全て半角() Dim buf As Range For Each buf In ActiveSheet.UsedRange If buf.HasFormula = False Then buf.Value = StrConv(buf.Value, vbNarrow) End If Next buf End Sub 何卒宜しくお願い致します。
Visual Basic | Excel・43閲覧・50
ベストアンサー
Sub アクティブシート全て半角①() Dim buf As Range Application.ScreenUpdating = False For Each buf In ActiveSheet.Range("B:Q").SpecialCells(xlCellTypeConstants) buf.Value = StrConv(buf.Value, vbNarrow) Next buf Application.ScreenUpdating = True End Sub Sub アクティブシート全て半角②() Dim buf As Range Application.ScreenUpdating = False For Each buf In ActiveSheet.Cells.SpecialCells(xlCellTypeConstants) buf.Value = StrConv(buf.Value, vbNarrow) Next buf Application.ScreenUpdating = True End Sub 未実行です。
1人がナイス!しています
質問者からのお礼コメント
ご回答ありがとうございます! どちらもものすごい処理の速さで驚きました。 大変助かりました! 心より感謝いたします。
お礼日時:1/28 9:21