私はマクロの作成とプログラミング全般に非常に慣れていません。38 個のタブのワークシートがあります。31 個のタブは、その月の日用です。これらの 31 個のタブのそれぞれの列 N で "MCO" が選択されるたびに、ユーザーに警告メッセージを表示するマクロを作成したいと考えています。それは可能ですか?
ありがとう
私はマクロの作成とプログラミング全般に非常に慣れていません。38 個のタブのワークシートがあります。31 個のタブは、その月の日用です。これらの 31 個のタブのそれぞれの列 N で "MCO" が選択されるたびに、ユーザーに警告メッセージを表示するマクロを作成したいと考えています。それは可能ですか?
ありがとう
ワークブック レベルの SheetSelectionChange イベントを使用して可能です。VBA プロジェクトの ThisWorkbook モジュールに、次のコードを貼り付けます。
Option Compare Text
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Dim SelectedCellsInColN As Range
' Make a range of the cells in Target range that intersect with the cells in the N column
Set SelectedCellsInColN = Intersect(Target, Target.Parent.Range("N1:N" & CStr(Target.Parent.Rows.Count)))
If Not SelectedCellsInColN Is Nothing Then
' The user has selected a cell in column N
Dim CurrCell As Range
For Each CurrCell In SelectedCellsInColN
' If the cell's value contains mco (in any case) then prompt the user with a messagebox
If CurrCell.Value Like "*MCO*" Then
MsgBox "You've selected MCO"
' Exit the sub so we don't keep bugging the user about it...
Exit Sub
End If
Next CurrCell
End If
End Sub
基本的に、コードが行うことは、ターゲット範囲を調べて、N 列のセルが選択されているかどうかを確認し、選択されている列 N のセルをループして、値に MCO が含まれているかどうかを確認することです (削除できますセルに「MCO」のみが含まれている場合にのみプロンプトが必要な場合は星印)、その場合はユーザーにプロンプトを表示して終了します。
それが役立つことを願っています。
-ジョン
マクロ ソリューションまたは vba ソリューションをお探しですか。2つは異なります。マクロ レコーダーを使用して手順を実行するマクロについては、VBA ソリューションについては、Jon の回答から始めます。