↑こんな感じのツールバーです。もちろんテキスト ボックスには自由に文字列を入力・編集できます。
ちなみに、同じようなやり方で、ツールバーにコンボ ボックスを配置することもできます。
興味のある方は「ツールバーでコンボ ボックスを使う」をご覧ください。
また「メニューバーに独自のメニューを追加する」と同じ方法で、ツールバーにメニューを追加することも可能です。
まず新しいツールバーを作ります。VBAを使って自動的に作ることもできますが、これは手作業で作った方が簡単です。ここでは[検索ツールバー]という名前のツールバーを例にして解説します。
【手作業で新しいツールバーを作る】
1. [ツール] - [ユーザー設定]を実行する。
2. [ユーザー設定] ダイアログ ボックスの [ツールバー] タブで [新規作成] ボタンをクリックする。
3. [ツールバー名] ボックスに「検索ツールバー」と入力して [OK] ボタンをクリックする。
蛇足ですが...
【VBAで新しいツールバーを作る】
Sub newb() CommandBars.Add "検索ツールバー" End Sub
これで「検索ツールバー」という新しいツールバーで作成されます。ただし、すでに同名のツールバーが存在するとエラーになりますので、下のようにチェックした方がいいでしょうね。
Sub newb() Dim tb As Variant For Each tb In CommandBars If tb.Name = "検索ツールバー" Then MsgBox "すでに同名のツールバーがあります。", 16 Exit Sub End If Next tb CommandBars.Add "検索ツールバー" End Subさて、ツールバーにボタンなどのコントロールを配置するときは、[ユーザー設定] ダイアログ ボックスなどからドラッグ & ドロップします。しかし、どこにもドロップできるテキスト ボックスはありません。ツールバー上に配置するテキスト ボックスは、VBA
のコードで作成してやらなければなりません。次のようにします。
Sub AddTextBox() ''ツールバー[検索ツールバー]にテキスト ボックスを作る With CommandBars("検索ツールバー").Controls.Add(Type:=msoControlEdit) .Caption = "EditBox" .TooltipText = "検索語を入力してEnterキーを押してください" .OnAction = "SheetSearch" End With End Sub
Caption プロパティはテキスト ボックスを識別するための名前です。
TooltipText プロパティに設定した文字列は、テキスト ボックスにマウス ポインタを併せたときに表示されます。
テキスト ボックス上で Enter キーが押されたときに実行されるプロシージャを OnAction プロパティに設定します。ここでは、テキストボックスに入力された文字列をアクティブシート上で検索するプロシージャを作ってみました。
Sub SheetSearch() Dim FoundCell As Variant Set FoundCell = Cells.Find(What:=CommandBars("検索ツールバー").Controls("EditBox").Text) If Not FoundCell Is Nothing Then FoundCell.Activate End Sub
Find メソッドの引数は、お好きなように設定してください。
他にも、ワークシートの SelectionChange イベントと組み合わせて
Private Sub Worksheet_SelectionChange(ByVal Target As Range) CommandBars("検索ツールバー").Controls("EditBox").Text = _ Format(WorksheetFunction.Sum(Target.Value), "#,##円") End Sub
↓なんてのも、おもしろいですね。