Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


6869 / 13646 ツリー ←次へ | 前へ→

【42634】CommandBarsについて kobasan 06/9/17(日) 8:43 質問[未読]
【42636】Re:CommandBarsについて だるま 06/9/17(日) 9:11 回答[未読]
【42637】Re:CommandBarsについて ichinose 06/9/17(日) 9:12 発言[未読]
【42638】Re:CommandBarsについて kobasan 06/9/17(日) 9:41 お礼[未読]
【42640】Re:CommandBarsについて だるま 06/9/17(日) 11:18 発言[未読]
【42646】Re:CommandBarsについて kobasan 06/9/17(日) 15:09 お礼[未読]
【42661】Re:CommandBarsについて kobasan 06/9/18(月) 18:28 質問[未読]
【42662】Re:CommandBarsについて ichinose 06/9/18(月) 18:42 発言[未読]
【42665】Re:CommandBarsについて kobasan 06/9/18(月) 20:41 お礼[未読]

【42634】CommandBarsについて
質問  kobasan  - 06/9/17(日) 8:43 -

引用なし
パスワード
   CommandBars のヘルプに

Add メソッド (CommandBars コレクション) の使用例

次の使用例は、"ユーザー設定" というコマンド バーをウィンドウの上端に追加し、組み込みの [貼り付け] ボタンをコマンド バーに追加します。

Set mybar = CommandBars _
  .Add(Name:="ユーザー設定", Position:=msoBarTop, _
  Temporary:=True)
With mybar
  .Controls.Add Type:=msoControlButton, Id:= _
    CommandBars("Edit").Controls("Paste").ID  '<===エラー発生

  .Visible = True
End With

とありますが、エラーが発生します。
それで、(1)(3)では、当然エラーになります。(2)はOKです。

  MsgBox CommandBars("Edit").Controls("Paste").ID                 '(1)
  MsgBox CommandBars("Worksheet menu bar").Controls(2).Controls(5).ID       '(2) 
  MsgBox CommandBars("Worksheet menu bar").Controls("Edit").Controls("Paste").ID '(3)

いまのところ、ID指定に、

 22または、CommandBars("Worksheet menu bar").Controls(2).Controls(5).ID

を使っていますが、

CommandBars("Edit").Controls("Paste").ID

のどこを直すといいのでしょうか。

【42636】Re:CommandBarsについて
回答  だるま WEB  - 06/9/17(日) 9:11 -

引用なし
パスワード
   >CommandBars("Edit").Controls("Paste").ID
>のどこを直すといいのでしょうか

"Paste"

"貼り付け(&P)"

でどうでしょうか。^d^

【42637】Re:CommandBarsについて
発言  ichinose  - 06/9/17(日) 9:12 -

引用なし
パスワード
   ▼kobasan さん:
おはようございます。

>CommandBars のヘルプに
>
>Add メソッド (CommandBars コレクション) の使用例
>
>次の使用例は、"ユーザー設定" というコマンド バーをウィンドウの上端に追加し、組み込みの [貼り付け] ボタンをコマンド バーに追加します。
>
>Set mybar = CommandBars _
>  .Add(Name:="ユーザー設定", Position:=msoBarTop, _
>  Temporary:=True)
>With mybar
>  .Controls.Add Type:=msoControlButton, Id:= _
>    CommandBars("Edit").Controls("Paste").ID  '<===エラー発生
>
>  .Visible = True
>End With
>
>とありますが、エラーが発生します。
>それで、(1)(3)では、当然エラーになります。(2)はOKです。
>
>  MsgBox CommandBars("Edit").Controls("Paste").ID                 '(1)
>  MsgBox CommandBars("Worksheet menu bar").Controls(2).Controls(5).ID       '(2) 
>  MsgBox CommandBars("Worksheet menu bar").Controls("Edit").Controls("Paste").ID '(3)
>
>いまのところ、ID指定に、
>
> 22または、CommandBars("Worksheet menu bar").Controls(2).Controls(5).ID
>
>を使っていますが、
>
>CommandBars("Edit").Controls("Paste").ID

Msgbox _
CommandBars("Worksheet menu bar").Controls("編集(&E)").Controls("貼り付け(&P)").ID

↑これは?

【42638】Re:CommandBarsについて
お礼  kobasan  - 06/9/17(日) 9:41 -

引用なし
パスワード
   だるま さん、ichinose さん おはようございます。

CommandBars("Worksheet menu bar").Controls("編集(&E)").Controls("貼り付け(&P)").ID

で解決しました。

編集(&E),貼り付け(&P)の書き方を見たことはありましたが、思い出せなかったです。まだまだ染み付いてないですね。
CommandBars("Edit")も不可解で、CommandBars("Worksheet menu bar")ではないかと思っていました。
それから、ヘルプは英語版のサンプルコードが出ている場合もあるのかなと思いました。
有難うございました。

【42640】Re:CommandBarsについて
発言  だるま WEB  - 06/9/17(日) 11:18 -

引用なし
パスワード
   >CommandBars("Worksheet menu bar").Controls("編集(&E)").Controls("貼り付け(&P)").ID
>
>で解決しました。
>

>CommandBars("Edit")も不可解で、CommandBars("Worksheet menu bar")ではないかと思っていました。


そうですか、でも私のところでは下記でも出来ました。
ま、どちらでもいいですけどね。^d^

Commandbars("Edit").Controls("貼り付け(&P)").Id

【42646】Re:CommandBarsについて
お礼  kobasan  - 06/9/17(日) 15:09 -

引用なし
パスワード
   だるま さん 今日は。

>私のところでは下記でも出来ました。
>Commandbars("Edit").Controls("貼り付け(&P)").Id

でも、動きました。

下記等を確かめながら、考えてみると、Worksheet menu bar は、CommandBarの集合体のようなものに感じました。

  MsgBox CommandBars("File").Name         '=>"File"
  MsgBox CommandBars("File").Controls(2).Caption '"開く(&O)"
  MsgBox CommandBars("Worksheet menu bar").Controls(1).Caption  '"File(&F)"

有難うございました。

【42661】Re:CommandBarsについて
質問  kobasan  - 06/9/18(月) 18:28 -

引用なし
パスワード
   続いてお願いします。

Worksheet menu barをもう少しつついてみて、"Worksheet menu bar"のCaption(?)
ではなくて、Name(?)を、つまり、下記のように"編集(&E)"ではなく、Nameの"Edit"
を確認しようと思って、

  MsgBox CommandBars("File").Name    '=>"File"
  MsgBox CommandBars("Edit").Name    '=>"Edit"
  ・・・・
  ・・・・
の内容を

Sub test5()
Dim c As CommandBar
  For Each c In CommandBars
    MsgBox c.Name
  Next
End Sub

でやろうとしました。これでは、まったく別のものが表示されるだけで、
目当てのものは表示してくれません。
For のところを
  For Each c In CommandBars("Worksheet menu bar").Controls
にしたら、エラーが出ます。
どうすればいいのでしょうか。

【42662】Re:CommandBarsについて
発言  ichinose  - 06/9/18(月) 18:42 -

引用なし
パスワード
   ▼kobasan さん:
こんばんは。

Sub test()
  Dim c As CommandBarPopup
  For Each c In CommandBars("Worksheet menu bar").Controls
   MsgBox c.CommandBar.Name
   Next
End Sub

これで試してみてください。

【42665】Re:CommandBarsについて
お礼  kobasan  - 06/9/18(月) 20:41 -

引用なし
パスワード
   ichinose さん 今晩は。

提示のコードで解決しました。

>Sub test()
>  Dim c As CommandBarPopup
       ~~~~~~~~~~~~~~~~(1)
>  For Each c In CommandBars("Worksheet menu bar").Controls
>   MsgBox c.CommandBar.Name
       ~~~~~~~~~~~~~~~~~(2)
>   Next
>End Sub

CommandBarPopup(1)とc.CommandBar.Name(2)の関係が、Worksheet menu barをCommandBarの集合体のように感じさせたのですね。
それにしてもc.CommandBar.Nameは、
CommandBars("Worksheet menu bar").Controls(i).CommandBar.Name
~~~~~~~~~~~                  ~~~~~~~~~~
ということになるので、思いつきませんでした。CommandBarsのメンバー中にまたCommandBarが入るのが、先入観で分りづらかったのかな。しかし、このことが、Worksheet menu barをCommandBarの集合体のように感じさせる原因のような気がします。

おかげさまで、すっきりしました。有難うございました。

6869 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free