数字または区切られた数字だけを伏字にするよ
この説明は、ChatGPTで作成しています。
このプロシージャの概要
このプロシージャは、選択されたセル範囲の中から 数字やカンマで区切られた数字 を探して、見つけた数字を ●(黒丸) で伏せ字に置き換える仕組みです。
具体的な処理の流れ
画面更新の停止
最初に `Application.ScreenUpdating = False` で画面更新を一時停止します。これにより、処理の途中で画面がチカチカするのを防ぎ、作業の効率を上げます。
正規表現オブジェクトの作成
`CreateObject("VBScript.RegExp")` によって、正規表現を使うためのオブジェクトを作成しています。このオブジェクトを使って、数字を探し出す仕組みを作ります。
正規表現の設定
`With reg` の部分で正規表現オブジェクトに対する設定を行っています。以下の内容です。
`.Pattern = "\b(?:\d{1,3}(?:,\d{3})*(?:.\d+)?|\d+(?:.\d+)?)\b"`
これは、セル内の 数字やカンマ付きの数字(例: 1,000 や 3.14) を見つけ出すためのパターンを指定しています。
`.IgnoreCase = True`:大小文字を区別しない設定ですが、今回は数字を探すので特に影響はありません。
`.Global = True`:該当するすべての数字を見つけるように設定しています。
選択範囲内のセルを1つずつ処理
`For Each myRng In Selection` で、選択されたセルの中から1つずつ処理を行います。
`txt = myRng.Value`:各セルの値を取得します。
`txt = reg.Replace(txt, "●")`:正規表現を使って、数字を ● に置き換えます。
`myRng.Value = txt`:置き換えた結果をセルに戻します。
画面更新の再開
最後に `Application.ScreenUpdating = True` で画面の更新を再開します。
まとめ
このプロシージャを使うと、Excelの選択範囲にある数字を一瞬で伏字に変えることができます。たとえば、顧客リスト などの個人情報を伏せたいときにとても便利です。
Excel VBA リファレンス | Microsoft Learn
この記事のYouTube動画はこちら
Sub 数字または区切られた数字だけを伏字にするよ()
Application.ScreenUpdating = False
Dim reg
Set reg = CreateObject("VBScript.RegExp") 'オブジェクト作成
Dim myRng As Range
Dim txt As String
Dim i As Long
With reg
.Pattern = "\b(?:\d{1,3}(?:,\d{3})*(?:\.\d+)?|\d+(?:\.\d+)?)\b"
.IgnoreCase = True
.Global = True
End With
On Error Resume Next
For Each myRng In Selection
txt = myRng.Value
txt = reg.Replace(txt, "●")
myRng.Value = txt
Next myRng
Application.ScreenUpdating = True
End Sub
ハッシュタグ
#excel #できること #vba #伏字 #正規表現 #数字の伏せ字 #オブジェクト作成 #正規表現オブジェクト #選択範囲 #テキスト置換 #カンマ区切り #パターンマッチング #VBScript #データマスク #マクロ #Excel自動化 #プライバシー保護 #データ処理 #セル操作 #文字列操作
Hide Only Numbers or Delimited Numbers
This explanation is created by ChatGPT.
Overview of this Procedure
This procedure searches for numbers or numbers delimited by commas within a selected cell range and replaces any found numbers with ● (black circles) as a form of masking.
Detailed Processing Flow
Stop Screen Updating
Initially, `Application.ScreenUpdating = False` stops screen updating, preventing the screen from flickering and improving processing efficiency.
Creating a Regular Expression Object
`CreateObject("VBScript.RegExp")` creates an object to use regular expressions, which enables searching for numbers.
Setting Up the Regular Expression
Within the `With reg` block, settings are configured for the regular expression object:
`.Pattern = "\b(?:\d{1,3}(?:,\d{3})*(?:.\d+)?|\d+(?:.\d+)?)\b"` specifies a pattern to find numbers or comma-separated numbers (e.g., 1,000 or 3.14).
`.IgnoreCase = True`: This ignores case sensitivity, though it’s not relevant here as we are dealing with numbers.
`.Global = True`: Ensures all matching numbers are found.
Processing Each Cell in the Selected Range
`For Each myRng In Selection` processes each selected cell:
`txt = myRng.Value` retrieves the cell value.
`txt = reg.Replace(txt, "●")` uses the regular expression to replace numbers with ●.
`myRng.Value = txt` places the modified value back into the cell.
Resume Screen Updating
Finally, `Application.ScreenUpdating = True` restarts screen updating.
Summary
This procedure allows you to quickly mask numbers within a selected Excel range, which is especially useful for hiding sensitive data like customer lists.
Excel VBA Reference | Microsoft Learn
YouTube Video of This Article
Hashtags
#excel #capabilities #vba #masking #regex #numbermasking #objectcreation #regexobject #selectedrange #textreplacement #commadelimited #patternmatching #VBScript #datamasking #macro #excelautomation #privacyprotection #dataprocessing #celloperations #stringmanipulation
この記事が気に入ったらサポートをしてみませんか?