先日のブログで、「Excel 上で Word のように校閲履歴を残す」を紹介しました。
私が作成したものは不完全でしたが、thom さんから改良(というより新作)をいただく(?)ことが出来ました(感謝!)。
これは、業務で使わない手はない!ということで、ユーザーフォームに組み込んでみました。
修正実行で、thomさんのマクロを実行します。また、使い勝手を考えて、
- 修正確定
- 修正取消
ボタンを作成しました。
↓ ユーザーフォーム
Option Explicit ' 修正実行 Private Sub CorrectButton_Click() Dim r As Range For Each r In Selection Call CorrectWord(r, TextBox1.Value, TextBox2.Value) Next TextBox1.Value = "" TextBox2.Value = "" TextBox1.SetFocus End Sub ' 修正確定 Private Sub ConfirmButton_Click() Call ProcessAfterReplacement(OriginalWordColor) End Sub ' 修正取消 Private Sub ResetButton_Click() Call ProcessAfterReplacement(CorrectedWordColor) End Sub ' 終了 Private Sub EndButton_Click() Unload Me End Sub
確定するか取り消すかは、同一のサブプロシージャに渡す色で判別しています。
↓ 標準モジュール
Option Explicit Public Sub ShowUserForm() CorrectWordForm.Show vbModeless End Sub ' 修正確定 または 修正取り消し Sub ProcessAfterReplacement(Processing_content As Long) Dim str As String Dim r As Range Dim i As Long For Each r In Selection str = "" For i = 1 To Len(r) Select Case r.Characters(i, 1).Font.Color Case Processing_content Case Else str = str & Mid(r, i, 1) End Select Next r.Value = str r.Font.Strikethrough = False r.Font.Color = vbBlack Next End Sub
なお、色で判別しているので、普段使用する色は避けたほうが良い。
↓ このようなところから選べる色にしてしまうと、思わぬ誤動作に繋がってしまいます。
そこで、標準的に選べる色から微妙~にずらした色を採択することで、とりあえずの対策としました。もともと資料をカラフルにするのは好きじゃないし、個人で使う分には問題ないと思っています。
参考まで。