2018年5月29日セル取り消し線の文字を削除するにはExcelの資料の修正を繰り返していく中で、履歴として取り消し線で残している場合があります。この取り消し線の部分をもう不要だからと削除することもあります。削除前後はこんな感じです。手作業の場合は以下のような手順になります。取り消し線文字部分にカーソルを当てる。取り消し線の文字部分を削除する。1か所程度なら大したことありませんが、あまりにも多いと時間が掛かって仕方ありません。そこで、取り消し線の文字列を一括で削除する方法を紹介します。ソースコードFontオブジェクト用の構造体メインのソースコードではFontオブジェクトの各プロパティの保持と再設定を行っています。以下のユーザー定義型(構造体)のST_FONTはそのために利用します。Fontオブジェクトをそのまま使えればそれがいいのですが、セルの文字列が書き換わると保持していたFontオブジェクトも変わってしまうという特性がVBAにはあります。VBAにはオブジェクト変数にディープコピーの概念(コピー元が変更してもコピー先に影響がないコピー方式)がないため構造体で代用しています。構造体の各変数はFontオブジェクトの各プロパティを同じ名前と型にしています。この構造体は後述のメインコードと同じ標準モジュール等でモジュールの一番上あたりに配置してください。Explicitの直後あたりです。Typeメインコード以下は対象のセルの文字列から取り消し線部分を除去する関数です。取り消し線の部分を削除するだけならStrikethroughプロパティがTrueの文字だけを連結すればいいのですが、それだと問題が発生します。問題とは、セルの文字列が再設定(再入力)するとフォントの設定がクリアされてしまう点です。そこで、ちょっとコードが長くなってしまいますが、セルの1文字ずつのフォントを再設定するための処理を入れています。処理概要は以下になります。セルを1文字ずつ取得。取得した文字が取り消し線が設定されているか確認。取り消し線が設定されていなければ残す。その際のその文字のフォントの各プロパティを保持しておく。取り消し線を除いた文字列をセルに再設定する。再設定後に一文字ずつフォントの各プロパティを再設定する。構造体には存在していますが使用する必要がないためBackground、Bold、ColorIndex、Italicプロパティは使用していません。FontオブジェクトのBackgroundプロパティとThemeColorプロパティの取得と設定をコメントにしていますが、使わないので消しています。Sub使い方いくつかのパターンの使い方を紹介します。指定セルから取り消し線を除くA2セルから取り消し線を除くためのコードです。引数にA2セルのRangeオブジェクトを渡しているだけです。選択セルから取り消し線を除く選択セル範囲の各セルから取り消し線を除くためのコードです。選択セル範囲をループして1セルずつRangeオブジェクトとして処理しています。選択セル範囲に空白セルや取り消し線がないセルが存在しても問題ありません。アクティブシートの全セルから取り消し線を除くアクティブシートの全セルから取り消し線を除くためのコードです。全セルを対象とすると処理時間がかかるため、UsedRangeプロパティで入力されているセル範囲を対象としています。全シートから取り消し線を除く全シートから取り消し線を除くコードです。上のコードにシートのループを追加しているだけです。Excel作業をVBAで効率化シェアお問合わせTOPへ。