概要
エクセルのあちこちに散らばった複数の単語をハイライトしたり、クリック一発でまとめてA1選択したり、全ページ指定倍率にしたり、赤枠図形をサクッと作成したい瞬間はありませんか。
私はありました。
よく使う操作はクイックアクセスツールバーに入れて時短してます。
手元の下記環境で動作確認しています。
環境
Windows11
Microsoft Office Professional Plus 2019
VBA、マクロ
修正箇所のクイック確認に「コピーした複数文字列(改行区切り)を一発でハイライトしてくれる」マクロ
何に使うのかというと、Excelの資料を確認をする際などにまとめてハイライトして修正箇所をチェックしやすくします。
Excelで資料見なきゃいけないけどやりたくない場合につかいましょう。
青とオレンジを作ってクイックアクセスツールバーに登録するのがおすすめです。
下記のマクロだとDataObjectの参照設定不要で使えました。
入力:改行区切り文字列(コピーすればOK)
検索対象:1シート全体
ハイライト対象:入力された文字列のあるセルの背景色(文字色変更ではない)
こういうことがしたい時におすすめです。
クイックアクセスツールバーにいれて汚していい資料を塗りつぶしながら品質を上げましょう。
Sub HighlightWordsFromClipboard()
Dim words() As String
Dim w As Variant
Dim rng As Range
Dim cell As Range
Dim hitCount As Long
Dim mode As VbMsgBoxResult
Dim clipText As String
' 検索モード選択
mode = MsgBox( _
"検索モードを選択してください" & vbCrLf & vbCrLf & _
"はい:部分一致" & vbCrLf & _
"いいえ:完全一致" & vbCrLf & _
"キャンセル:終了", _
vbYesNoCancel + vbQuestion, _
"検索モード選択" _
)
If mode = vbCancel Then Exit Sub
' --- クリップボード取得 ---
Dim obj As Object
Set obj = CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
obj.GetFromClipboard
clipText = obj.GetText
If Trim(clipText) = "" Then Exit Sub
words = Split(clipText, vbCrLf)
Application.ScreenUpdating = False
hitCount = 0
Set rng = ActiveSheet.UsedRange ' 検索対象:そのシート
For Each cell In rng.Cells
If Not IsError(cell.Value) Then
For Each w In words
If Trim(w) <> "" Then
If mode = vbYes Then
' 部分一致
If InStr(1, cell.Value, w, vbTextCompare) > 0 Then
cell.Interior.Color = RGB(255, 192, 0)
hitCount = hitCount + 1
Exit For
End If
ElseIf mode = vbNo Then
' 完全一致
If StrComp(cell.Value, w, vbTextCompare) = 0 Then
cell.Interior.Color = RGB(255, 192, 0)
hitCount = hitCount + 1
Exit For
End If
End If
End If
Next w
End If
Next cell
Application.ScreenUpdating = True
MsgBox hitCount & " 件をハイライトしました", vbInformation, "完了"
End Sub
確認したセルの背景を「黒く塗りつぶす/白に戻す」トグルマクロ
順序があるシートで見た場所をマークするのに使っています。
背景色を戻すクイックアクセスツールバーやショートカットキーが存在しないので入れています。
クリックするたびに白と黒が入れ替わります。気分はマークシートですね。
Sub ToggleBlackFill()
Dim c As Range
Dim hasBlack As Boolean
If TypeName(Selection) <> "Range" Then Exit Sub
' まず黒セルが含まれているかチェック
hasBlack = False
For Each c In Selection
If c.Interior.Color = RGB(0, 0, 0) Then
hasBlack = True
Exit For
End If
Next c
' 黒が含まれていれば解除、なければ黒塗り
For Each c In Selection
If hasBlack Then
c.Interior.Pattern = xlNone
Else
c.Interior.Color = RGB(0, 0, 0)
End If
Next c
End Sub
100枚以上あるシートの選択の頻繁な移動に便利な「シート選択表示」マクロ
Excelの左下の間を右クリックすると出てくるやつです。
100枚ぐらいあるシートを移動するためだけにいちいち左下を右クリックしてられないですよね。
しかもこういうのを作ろうとすると必ずユーザーフォーム(VBAのUIみたいなコード化できないやつ)をおすすめされるのでね、この方法はユーザーフォーム使わないでできるので大変便利ですね。
Sub SheetSelectDialog()
With CommandBars.Add(Temporary:=True)
.Controls.Add(ID:=957).Execute
.Delete
End With
End Sub
ファイル倍率やカーソルが揃ってない場合用「倍率指定A1選択」マクロ
倍率指定用、大量のファイルを見なきゃいけないのにブックごとに倍率が揃ってない場合に使います
倍率は必要に応じて毎回自分で見やすいサイズにいじって使っています。
Sub ZoomByA1()
ActiveWindow.Zoom = 70 '倍率指定する(%)
ActiveSheet.Range("A1").Select
End Sub
マウスでホーム(A1)飛びたい人向け
A1選択されてない資料でショートカットキー押したくない人向けマクロ
Sub SelectA1()
ActiveSheet.Range("A1").Select
End Sub
いますぐ押しやすいボタンでzoomを上げたい「+10% -10%」マクロ
右下とかホイールで倍率上げ下げしたくない人向け
拡大率+10%
Sub ZoomPlus10()
ActiveWindow.Zoom = ActiveWindow.Zoom + 10
End Sub
拡大率-10%
Sub ZoomMinus10()
ActiveWindow.Zoom = ActiveWindow.Zoom - 10
End Sub
選択中のセルにそって赤枠オブジェクトを作るマクロ
画像を赤枠でかこって強調表示したいときにいちいち図形から作るのが面倒なので作りました。
↓こういうのです。選択セルに赤枠オブジェクトが出現します。

Sub AddRedBorderRectangleToCell()
Dim targetCell As Range
Dim shp As Shape
' 対象セルを指定(選択中のセルを使う場合)
Set targetCell = Selection
' すでに同名の図形があれば削除(再実行対応)
On Error Resume Next
ActiveSheet.Shapes("CellBorderRect_" & targetCell.Address(False, False)).Delete
On Error GoTo 0
' セルの位置・サイズに合わせて四角形を作成
Set shp = ActiveSheet.Shapes.AddShape( _
msoShapeRectangle, _
targetCell.Left, _
targetCell.Top, _
targetCell.Width, _
targetCell.Height)
With shp
.Name = "CellBorderRect_" & targetCell.Address(False, False)
.Fill.Visible = msoFalse ' 塗りつぶしなし(透明)
.Line.Visible = msoTrue
.Line.ForeColor.RGB = RGB(255, 0, 0) ' 赤色
.Line.Weight = 2 ' 線の太さ(pt)
.Placement = xlMove ' セルと一緒に移動(サイズは追従しない)
End With
End Sub
使い方:開発リボン表示方法から、クイックアクセスツールバー登録まで
最後に、開発リボン表示方法-マクロ作成-クイックアクセスツールバー登録までを追っていきます。
開発リボンを出す:
ファイル→オプション→リボンのユーザー設定→「開発」にチェックして「OK」

ファイル名を変更して、「Excelアドイン」を選択
(アドインのパスもメモ帳などに保存しておく「C:\Users\YOUR_NAME\AppData\Roaming\Microsoft\AddIns」など、もし動かなかったらトラストセンターから信頼済みの場所に登録してExcel再起動)

開発→Excelアドイン→参照→先程のアドインのファイルを選択→OK

ファイル→オプション→クイックアクセスツールバー→コマンドの選択「マクロ」→さっき作ったマクロの関数名を選択→「追加>>」→OK
マクロはなぜか2個ぐらい出る時があるけどどっちでもいいと思う。

セルを選択して左上の増えたマークをクリック、セルが黒くなる(マクロの効果)はず。

おわり。










