![見出し画像](https://assets.st-note.com/production/uploads/images/153451344/rectangle_large_type_2_b6488335f774e3c93c4631643cc5f2ce.png?width=1200)
月給金額の異常値だけを赤字にするよ
この説明は、ChatGPTで作成しています。
このプロシージャは、Excelのセルに記載された「月給」に関する数値のうち、異常な値(1〜5桁または7桁以上の数字)を探して、その部分だけを赤字に変更するものです。
仕組みのポイント
正規表現を使った異常値の判定
このコードでは、「正規表現」という方法を使って、テキストの中に特定のパターン(今回の場合は「月給」とその金額)を探しています。特に、*「1〜5桁または7桁以上の数値」*が異常な値とみなされ、それに該当する部分が赤字になります。
`Pattern = "月給(\d{1,5}|\d{7,})円"` という部分がそのルールです。
選択範囲内のセルを処理
Excelで選択した範囲のセルを1つずつ調べて、その中に「月給」という文字と指定された桁数の数値が含まれていれば、その文字を赤く変えます。
画面更新を一時停止
プロシージャの最初と最後に `Application.ScreenUpdating = False` と `Application.ScreenUpdating = True` があります。これは、コードの実行中に画面が頻繁に更新されて見えにくくならないように、一時的に画面の更新を止めるためのものです。
具体的な流れ
`CreateObject("VBScript.RegExp")` で正規表現を使うためのオブジェクトを作成します。
`Selection` で、Excelで現在選択されている範囲を取得します。
各セルの値を確認し、正規表現で「月給」と異常な数値を含む部分を見つけたら、その部分を赤字にします。
最後に `ScreenUpdating` を再度有効にして、画面の更新を戻します。
この記事のYouTube動画はこちら
Sub 月給金額の異常値だけを赤字にするよ()
Application.ScreenUpdating = False
Dim reg As Object
Set reg = CreateObject("VBScript.RegExp") 'オブジェクト作成
Dim myRng As Range
Dim txt As String
Dim matches, match As Object
With reg
.Pattern = "月給(\d{1,5}|\d{7,})円"
.IgnoreCase = True
.Global = True
End With
For Each myRng In Selection
txt = myRng.Value
Set matches = reg.Execute(txt)
If matches.count > 0 Then
'マッチした文字列の部分だけ赤色にする
For Each match In matches
myRng.Characters(match.FirstIndex + 1, match.Length).Font.Color = vbRed
Next match
End If
Next myRng
Application.ScreenUpdating = True
End Sub
ハッシュタグ
#excel #できること #vba #月給 #異常値 #セルの書式設定 #正規表現 #金額 #色の変更 #赤字 #オートメーション #マクロ #プログラミング初心者 #自動化 #文字列操作 #企業向け #オブジェクト作成 #選択範囲 #スクリーン更新停止 #エクセルマクロ
English Translation
Highlight Only Abnormal Monthly Salary Amounts in Red
This explanation was created using ChatGPT.
This procedure is designed to search for abnormal salary amounts in the selected cells of Excel (specifically 1-5 digit or 7+ digit numbers) and highlight those parts in red.
Key Points of the Process
Using Regular Expressions for Abnormal Value Detection
The code uses regular expressions to find specific patterns in the text. In this case, it looks for monthly salary figures, marking those with "1 to 5 digits or 7 digits and above" as abnormal values, which are then highlighted in red.
The rule for this is set with the line: `Pattern = "月給(\d{1,5}|\d{7,})円"`.
Processing Each Cell in the Selected Range
The code examines each cell within the selected range in Excel. If it contains the word "月給" and matches the specified salary digits, that part of the text will be turned red.
Temporarily Pausing Screen Updates
`Application.ScreenUpdating = False` and `Application.ScreenUpdating = True` are used to prevent screen flickering during code execution by temporarily disabling and then re-enabling screen updates.
Step-by-Step Breakdown
It creates an object for using regular expressions with `CreateObject("VBScript.RegExp")`.
It retrieves the currently selected range in Excel via `Selection`.
For each cell, if a part of the text matches the pattern of "月給" followed by an abnormal number, that part of the text is turned red.
Finally, screen updates are restored with `ScreenUpdating = True`.
Watch the corresponding YouTube video here
Hashtags
#excel #capabilities #vba #monthlysalary #abnormalvalues #cellformatting #regex #amounts #colorchange #redtext #automation #macros #beginnerprogramming #autotasks #stringmanipulation #forcompanies #objectcreation #selectionrange #disableupdates #excelmacros
この記事が気に入ったらサポートをしてみませんか?