コマンドバーについて(エクセルVBA)
- エクセルの表示-ユーザー設定-コマンドのコマンドで、分類を書式を選び、塗りつぶしの色、パターン、罫線などをドラッグ&ドロップしてコマンドバーに配置し、ボタンの右側の▼印をクリックするとプルダウンでメニューが出てきます。
- そのメニューには、切り取り線「・・・・・・・」が入っており、コマンドバーから切り離して表示することが出来ます。
- また、プルダウンメニューには、ボタンイメージが縦横に配列でき、区切り線の下に、普通のボタンイメージとテキスト表示が出来ます。(典型的な例は、罫線)
- ベストアンサー
コマンドバーについて(エクセルVBA)
エクセルの表示-ユーザー設定-コマンドのコマンドで、分類を書式を選び、塗りつぶしの色、パターン、罫線などをドラッグ&ドロップしてコマンドバーに配置し、ボタンの右側の▼印をクリックするとプルダウンでメニューが出てきます。そのメニューには、切り取り線「・・・・・・・」が入っており、コマンドバーから切り離して表示することが出来ます。また、プルダウンメニューには、ボタンイメージが縦横に配列でき、区切り線の下に、普通のボタンイメージとテキスト表示が出来ます。(典型的な例は、罫線) 同じようなことをVBAから作ることってできるのでしょうか?結構便利な機能だと思うのですが・・?どなたか?詳しい方いらっしゃいましたらご指導のほど宜しくお願い致します。
- wan_wan
- お礼率34% (114/329)
- オフィス系ソフト
- 回答数4
- ありがとう数1
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
ちょっと見直してみました。私は、別に本を参考にしたわけではありませんが、ここらあたりの項目については、アドインの件を含めて、しかるべき本を購入して、ご自身で研究されると良いです。もう、wan_wanさんのご質問は、掲示板では、たぶん、追いつかないように思います。 それと、こういうものは、ご自分で書いたものを構築していくのが良いと思います。SourceSafe (ソースのストック)は、Developer ToolやVB6でしか付いておりませんが、Developer もVB6も過去のものですから、フリーのアドイン MZ Tool 3.0 (www.mztools.com )が、こうしたややこしいものには、ソースをストックしておけば役に立ってくれます。使えば、使うほど、なじんできます。特に、システムを構築するときは、このMZ Toolが役に立ちます。 それから、おそらく、開発のこういう面倒な作業は、いずれなくなるかと思います。 なお、以下は、あまり詳しく検査していませんので、多少の問題は目をつぶってください。 Sub CommandMenu_Add() Dim myCBCtrl As CommandBarControl Dim mySubCB As CommandBarControl Dim myCBC As CommandBar 'ユーザーメニューは、最初に、メニュー削除を置き、二重登録させないようにする On Error Resume Next Application.CommandBars("ユーザーメニュー").Delete On Error GoTo 0 'オブジェクト変数を置くほうが楽 Set myCBC = Application.CommandBars.Add(Name:="ユーザーメニュー", Position:=msoBarTop, Temporary:=True) Set myCBCtrl = myCBC.Controls.Add(Type:=msoControlPopup) With myCBCtrl .Caption = "メニュー(&U)" .BeginGroup = True .TooltipText = "ユーザーメニューの設定の仕方(&U)" End With Set mySubCB = myCBCtrl.CommandBar.Controls.Add(Type:=msoControlButton) With mySubCB .Caption = "コマンド1(&A)" .OnAction = "msg1" .FaceId = 481 End With Set mySubCB = myCBCtrl.CommandBar.Controls.Add(Type:=msoControlButton) With mySubCB .Caption = "コマンド2(&B)" .OnAction = "msg2" .FaceId = 482 End With Set mySubCB = myCBCtrl.CommandBar.Controls.Add(Type:=msoControlButton) With mySubCB .Caption = "メニュー消去(&X)" .OnAction = "DeleteMenu" .FaceId = 483 End With myCBC.Visible = True Set mySubCB = Nothing Set myCBCtrl = Nothing Set myCBC = Nothing End Sub Private Sub Msg1() MsgBox "コマンド1が実行されました。" End Sub Private Sub Msg2() MsgBox "コマンド2が実行されました。" End Sub Private Sub DeleteMenu() If MsgBox("メニューを消去してよいですか?", vbOKCancel) = vbOK Then On Error Resume Next Application.CommandBars("ユーザーメニュー").Delete On Error GoTo 0 End If End Sub
その他の回答 (3)
- Wendy02
- ベストアンサー率57% (3570/6232)
訂正します。 >つまり、カスケード型のメニューがほしいということですね。 カスケード型ではありませんでした。あくまでも、ドロップダウンボタンによって、その中が開くものです。これらの作り方、名称については、マニュアルをみていただくのが正確です。
- Wendy02
- ベストアンサー率57% (3570/6232)
Wendy02です。 >▼マークがついたボタンを作りたいってことにもなります。 まとまった時間が取れそうもないので、サンプルは作れませんが、それは、ツールボタンの種類のことですね。 #1 で、ふと気にはなっていましたが、そういう下位のメニューなどは、サンプルとしてはと面倒なので、割愛してしまいました。つまり、カスケード型のメニューがほしいということですね。 それは、.Controls.Add Type:=msoControlButtonDropdown などのことをさすのでしょうか? 後は、ヘルプなどでごらんになれば、見当が付くのではないかと思います。
- Wendy02
- ベストアンサー率57% (3570/6232)
こんばんは。Wendy02です。 通常は、ユーザー設定で、ツールバーを新規作成して、その上に、コマンドボタンなどを乗せていく方法ですね。 >同じようなことをVBAから作ることってできるのでしょうか? 私は、前回と同じパターンになりますが、こんな風に、マクロで作ります。なお、キャプションが入れてありますので、ツールチップスのように出てきます。 ボタンを開いた後のメニューをカスケードにするのでしたら、一番上は、PopUp にしてから、繋げていってください。 Sample コード '--------------------------------------------------- Sub ToolBarsSetting() 'ツールバーの設定 Application.CommandBars.Add Name:="UserToolBars1", Temporary:=True With Application.CommandBars("UserToolBars1") With .Controls.Add(Type:=msoControlButton, Temporary:=True) .FaceId = 481 'ハート .Caption = "myMacro1の実行" .OnAction = "myMacro1" End With With .Controls.Add(Type:=msoControlButton, Temporary:=True) .FaceId = 482 'ダイヤ .Caption = "myMacro2の実行" .OnAction = "myMacro2" End With With .Controls.Add(Type:=msoControlButton, Temporary:=True) .FaceId = 483 'スペード .Caption = "myMacro3の実行" .OnAction = "myMacro3" End With With .Controls.Add(Type:=msoControlButton, Temporary:=True) .FaceId = 484 'クローバ .Caption = "myMacro4の実行" .OnAction = "myMacro4" End With .Visible = True .Position = msoBarLeft '左側壁面に貼り付け End With End Sub '--------------------------------------------------- Sub ToolBarsReset() 'ツールバーの解除 On Error Resume Next Application.CommandBars("Usertoolbars1").Delete End Sub '--------------------------------------------------- Private Sub myMacro1() MsgBox "myMacro1が実行されました", vbInformation End Sub Private Sub myMacro2() MsgBox "myMacro2が実行されました", vbInformation End Sub Private Sub myMacro3() MsgBox "myMacro3が実行されました", vbInformation End Sub Private Sub myMacro4() MsgBox "myMacro4が実行されました", vbInformation End Sub '--------------------------------------------------- p.s. http://oshiete1.goo.ne.jp/kotaeru.php3?q=2259005 >PasteFaceで貼り付けると、なんと、絵が一回り小さくなってしまいます。 これについては、詳しくは分かりませんが、貼り付ける画像の種類の問題なのか、と思っています。もともと、私の情報は、海外のサイトで読んだもので、また、今のところ、Excel 2003 をいじってはいないので、深く突っ込んではいません。VB6 のような手軽さはないようです。 >肥大化の問題が残ります。 以前の話を読まれたのですね。私は、一旦、ファイルをリセットする以外に、明快な解決策を持っておりません。 私は、既存の以下のような公認されたツール以外のツールは使わない方針です。 そのようなマクロを含んだブックの肥大化の問題を解消するツールがあるのは知っておりますが、おそらくは、内容をそのまま、コピーして、中身の画像ファイルのカウントのインクリメンタルな数値などをリセットしているのだろうと思っています。 VBのディストリビューション・ウィザードは、VB6(Visual Studio) のツールです。 EXEPress インストーラ(誤:インストローラ)は、代表的なフリーのツールです。 インストーラの比較 http://dobon.net/vb/installer/index.html
補足
いつもいつもご指導ありがとうございます。 質問の仕方が悪かったのが原因ですが、少し意味合いが違う内容となってしまいました。確かに、ワークシート上に引張り出した時の結果は同じなのですが、コマンドバーにくっついている時の状態が私のイメージと異なっています。貴重なお時間を割いて、指導して頂いていて誠に恐縮ですが、重ね重ねご指導のほど願えないでしょうか? コマンドバーに罫線のボタンを貼り付けた時に右側に▼の印がでます。それをクリックすると下にメニューが開くのですが、・・・・で切り取り線みたいなのが出てきます。そして、「ドラッグするとメニューを切り離せます」ってコメントがでて、ドラッグすると、切り離せます。切り離したあとは、×マークで、閉じることも出きるのですが、ご指導いただいた内容ですと、またコマンドバーの表示のマクロを起動させる必要があります。しかし、標準の機能の罫線の場合は、また、▼をクリックするとメニューが展開されます。 別の言い方をすると、▼マークがついたボタンを作るりたいってことにもなります。 凄く、説明が悪くて恐縮ですが、気持ちが通じたでしょうか?お忙しい中、ご指導願えれば幸いです宜しくお願い致します。
関連するQ&A
- コマンドバーのイメージの設定(エクセルVBA)
アドインファイルを作ろうと考えてます。その時、アドインファイルに組み込むマクロのイベントをコマンドバーにて行おうと思っています。表示-ツールバー-ユーザー設定で、ツールバーの新規作成を行いユーザー設定のコマンドでコマンドボタンを貼り付けボタンイメージの編集でフェースを変更、マクロの割付を行いました。で、アドインファイルで保存しようと思ったのですが、コマンドバーを一緒に保存って出来るのでしょうか?それとも、Initializeで、一から作成しないと駄目なんでしょうか?その時、ボタンのイメージはどのように設定(同時に、ボタンイメージの編集で作成したイメージの保存)はどのように行えば宜しいのでしょうか? CommandBars、CommandBarControlで、コマンドバーの追加、マクロの割付までは出来るのですが、ヘルプで見ると、Obj.FaceId = 17と使用例がありますが、これだとエクセル標準のイメージしか使えないような気がしますが?ネットで配布されているアドインでは、オリジナルのコマンドーバーのイメージが使われています。どなたか、詳しい方教えて頂けないでしょうか?宜しくお願い致します。
- ベストアンサー
- オフィス系ソフト
- vistaのコマンドバーの表示方法
vista使用で、「お気に入り」に追加しているどのサイトを開いてもメニューバー(ファイル、編集etc)が消えてしまい、コマンドバーの「整理」ボタンからレイアウトの表示を行おうとしたのですが、コマンドバーも消えてしまっていて、メニューバーの再表示ができません。 整理ボタン(コマンドバー)の再表示方法を教えて下さい。 補足 Altキーを押してもメニューバーは表示されませんでした よろしくお願い致します
- 締切済み
- Windows系OS
- IE8のコマンドバーが表示できない
Internet Explorer8で、コマンドバー(ホームページのボタンや、お気に入りセンターの表示ボタン)が表示できなくなってしまいました。 メニューバーで右クリックすると「コマンドバー(C)」という項目はあるのですが、それを選択しても表示されません。 選択してもチェックもつきません。 地震による停電でPCが落ちて、その後再起動してからこのような状況になっています。 レジストリや設定ファイルなどで何かが壊れたのでしょうか? ■環境 Windows XP SP3 Internet Explorer 8.0.6001 Googleツールバー、gooスティックを使用中
- ベストアンサー
- Windows XP
- Word:『ページ罫線の絵柄』
[罫線]メニュー ↓ [罫線とページ罫線と網かけの設定]ダイアログ ↓ [ページ罫線]パネル ↓ 「絵柄」のプルダウンメニュー …が、変なんです☆ どんなふうに「変」かっていうと… 横の▼をクリックしても、プルダウン のメニューに絵柄が表示されません! というか、表示はされるけど、 ぐちゃぐちゃで、何の絵柄か分かりません(^^;;) でも、とりあえずどれかを選ぶと、 ダイアログのプレビューには、 ちゃんと表示されるし、そのまま [OK]ボタンをクリックすれば、 本文にも適用されます ちなみに、おかしいのはカラーの絵柄 だけで、モノクロの絵柄は、問題なく 表示されます。 これって何が原因なのでしょうか。 また、どうすれば直りますか???
- ベストアンサー
- オフィス系ソフト
- wordとかエクセルのドロップダウンメニューにある各コマンドの横にアル
wordとかエクセルのドロップダウンメニューにある各コマンドの横にアルファベットがありますが、切り取り(t)とかというのてす。何の意味があるのか教えて下さい。知ってると操作上役に立つとか便利とかありますか。
- ベストアンサー
- オフィス系ソフト
- Excel VBA --- コマンドボタンが表示上で消える ---
Excel VBAの初心者です。 今回、マニュアル本を見ながら試行錯誤でマクロにチャレンジしています。 用語や説明が上手くできないかもしれませんがよろしくお願いします。 OSはWindows2000、Excelのバージョンは2000です。 sheet1をメニュー画面として、コマンドボタンをいくつか貼り付けて、そのシート名を表示したコマンドボタンをクリックすると別のシートに 飛ぶようにしています。 別のシートに飛んで、そこで作業を終えたら、今度はそのシート上に貼り付けた『メニューに戻る』コマンドボタンをクリックしてsheet1のメニュー画面に戻るようにマクロを組みました。 ところが、作業用のシートからメニューに戻ると前回クリックしたコマンドボタンが表示上消えてしまっています。 そのコマンドボタンがあった位置にカーソルを持って行ってクリックするとちゃんとコマンドボタンの動作をします。 同じような質問がないか検索してみましたら『コマンドボタン上の文字の表示がおかしくなる』という質問があって、下記コードを入れたら解決したそうなので、Sheet1に下記のようなコードを入れてみました。 でもダメでした。 Private Sub Worksheet_Activate() Application.ScreenUpdating = False ActiveWindow.ScrollRow = 100 ActiveWindow.ScrollRow = 1 End Sub 解決方法のご教授をお願い致します。
- ベストアンサー
- オフィス系ソフト
- エクセルVBAに関する質問です。
フォームのコマンドボタンを押すと、シート1のA1が選択され、その後、何もせず数字を入力すると、シート1のA1にその数字が入るようにしたいのですが、どうすればよいのでしょうか? フォームはメニュー代わりに使いたいので、常に表示させておきたいです。 よろしくお願いします。
- ベストアンサー
- Visual Basic
- Excelの切取り線?
Excel2003を使っています。 昨日友人からエクセルの「編集」メニューに「切り取り線」ボタンがあるから便利だと教えてもらいました。 自宅に帰ってみてもそんなボタンはありませんでした。どうやったら表示できるか教えて頂けませんか? 宜しくお願いします。
- ベストアンサー
- オフィス系ソフト
- Word2007 オートSUMのボタンが見当たりません
Word2007で、表を作り、数字を入力しました。小計をしたいのですが、Σ:オートSUMのボタンが見当たりません。 [ツール]→[ユーザ設定]→[コマンド]→ (分類)[表/罫線]→(コマンド)[オートSUM]をメニューバーまで ドラッグする という回答を見つけましたが、ツールバーの出し方も分かりません。 宜しくお願いします。
- 締切済み
- Windows Vista
- コンボボックスから検索するVBA(エクセル)
sheet1にメニュー画面 sheet2に一覧表を作成しました。 (1)sheet1でユーザーフォームを起動させる。 (2)ユーザーフォームにはコンボボックスを1つ、コマンドボタンを2個配置しました (3)コンボボックスのプルダウンメニューはsheet2の一覧表より取得しました (4)sheet2の一覧表は今後データが増えていきます(データは4行目以降) という条件で以下のコードを作成しました。 (1)と(2)のコマンドボタンは正常に作動しています。 コンボボックスのコードのみ書いています。 Private Sub UserForm_Initialize() Dim i As Long With Worksheets("sheet2") For i = 4 To .Cells(Rows.Count, 3).End(xlUp).Row ComboBox1.AddItem Cells(i, 3).Value Next i End With End Sub このときプルダウンメニューを押しても空欄が表示されてしまいます。 できない理由が分かりません。よろしくお願いします。 また、Private Sub ComboBox1_Change()とは何が違うのでしょうか? 最近 VBAを始めた初心者です。よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
お礼
丁寧なご指導、いつもありがとう御座います。 エクセルの2007をまだダウンロードしていないのでわかりませんが、最近、.NETの本を立ち読みしてみると、確かに、メニューの作成の仕方がまるっきり変わっているように思えました。ご忠告ありがとう御座います。また、無駄な労力をしてただでさえ前に進まないのに、停滞するところでした。ご指導頂いた内容を参考に、自己研鑽に励みたいと思います。 今後とも宜しくお願い致します。
補足
ご指導頂いたマクロを実行しましたが、▼マークは出るのですが、切り離しが出来ませんでした。チョット、イメージと違っています。が、ご指導のように、VB6当りの本を読んで勉強してみたいと思います。 本当にご丁寧にありがとう御座いました。