重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

100件程度の実績のあるソフトですが、あるお客様のみ不思議な現象が発生しています。
そのお客様はWindowsXP & Excel2007の組み合わせで、ソフトは互換モードで動作しています。

Option Compare Text
Option Explicit

Sub migi_del()
Dim icbc
Application.CommandBars("cell").Reset
For Each icbc In Application.CommandBars("cell").Controls
icbc.Delete
Next icbc
End Sub

Sub migi_add()
Dim icbc
Application.CommandBars("cell").Reset
For Each icbc In Application.CommandBars("cell").Controls
icbc.Delete
Next icbc

With Application.CommandBars("cell").Controls _
.Add(Type:=msoControlButton, Temporary:=True)
.Caption = "Message!"
.OnAction = "aaa"
End With
End Sub

Sub migi_addTag()
Dim icbc
Application.CommandBars("cell").Reset
For Each icbc In Application.CommandBars("cell").Controls
icbc.Delete
Next icbc

With Application.CommandBars("cell").Controls _
.Add(Type:=msoControlButton, Temporary:=True)
.Caption = "Message!"
.OnAction = "aaa"
.Tag = "aaa"
End With
End Sub

Sub migi_Rest()
Dim icbc
Application.CommandBars("cell").Reset
End Sub

Sub aaa()
MsgBox "OK"
End Sub

Sub Sample()
Application.CommandBars("Row").Reset
Application.CommandBars("Column").Reset
End Sub

の何れの操作を行っても、右クリックは標準のものが表示されてしまいます。
WindowsXP & Excel2007の組み合わせの他のお客様ではこのような現象は出ていません。
何方か理由をご存知の方はいらっしゃいませんか?

「Excel2007互換モードでの右クリッ」の質問画像

A 回答 (4件)

>リセットしますと、今度は右クリックで何も表示されなくなりました。


Sub migi_Rest()
  Dim cb As CommandBar
  For Each cb In Application.CommandBars
    If cb.Name = "Cell" Then
      cb.Reset
    End If
  Next
End Sub
リセットもLoop処理してください。

おそらく、Index 12 のCommandBarが標準のもので
Index 11 は改ページプレビュー用の"Cell"なのでしょう。
    • good
    • 0
この回答へのお礼

有難うございます。
明日、試してみます。

Sheet1.xlsの続きです。
136Selection and Visibilityオブジェクトの選択と表示0
137Document Managementドキュメント管理0
138Document Updatesドキュメントの更新0
139Mail Merge Panes差し込み印刷ウィンドウ0
140Fax ServiceFAX サービス0
141Meeting Workspace会議ワークスペース0
142Attachment Options添付ファイルのオプション0
143Ribbon AdapterRibbon Adapter0
144Add Commandコマンドの追加2
145Built-in Menus組み込みのメニュー2
146Clipboardクリップボード0
147Envelope封筒0
148Online Meetingオンライン会議0
149 0
150Status Barステータス バー0
151RibbonRibbon0

文字数に制限があり、続きを何処に入れたら良いのか解らなくて、「回答」をお待ちしておりました。
・・本当は「補足入力」に入れてはいけないのですね。
ファイルの添付ができれば良いのですが。

お礼日時:2011/03/10 18:14

>id:11


ですか。
2007のデフォルトではid11はCommandBars("Formatting")ですよね。
どうも標準シート右クリックメニューのCommandBars("cell")とは別物のようです。
Sub test()
  Dim cnt As Long
  Dim i  As Long

  With Application.CommandBars
    cnt = .Count
    ReDim v(0 To cnt, 1 To 4)
    v(0, 1) = "index"
    v(0, 2) = "name"
    v(0, 3) = "namelocal"
    v(0, 4) = "type"
    For i = 1 To cnt
      With .Item(i)
        v(i, 1) = .Index
        v(i, 2) = .Name
        v(i, 3) = .NameLocal
        v(i, 4) = .Type
      End With
    Next
  End With
  Workbooks.Add(xlWBATWorksheet).Sheets(1).Range("A1:D1").Resize(cnt + 1).Value = v
End Sub
..こんな感じのでCommandBars列挙して確認したい気持ちもありますけど、
確実な対処方法として、#1で書いたようにLoop&名前判定で処理すれば良いと思います。

Sub migi_addTag()
  Dim cb  As CommandBar
  Dim icbc As CommandBarControl

  For Each cb In Application.CommandBars
    With cb
      Select Case .Name
      Case "Cell"
        .Reset
        For Each icbc In .Controls
          icbc.Delete
        Next
        With .Controls.Add(Type:=msoControlButton, Temporary:=True)
          .Caption = "Message!"
          .OnAction = "aaa"
          .Tag = "aaa"
        End With
      End Select
    End With
  Next
End Sub

この回答への補足

66Pivot Chart Popupピボットグラフのポップアップ2
67Phonetic Informationふりがな2
68Auto Sumオート SUM2
69Paste Special Dropdown形式を選択して貼り付けオプションのドロップダウン2
70Find Format書式の検索2
71Replace Format書式の置換2
72List Range Popupリスト範囲ポップアップ2
73List Range Layout Popupリスト範囲レイアウト ポップアップ2
74XML Range PopupXML 範囲ポップアップ2
75List Range Layout Popupリスト範囲レイアウト ポップアップ2
76NilNil2
77Filter Namesフィルタ名2
78Excel PreviewerExcel プレビューア2
79&Legacy Keyboard Support前バージョンのキーボード ショートカット キーのサポート(&L)1
80Drawing図形描画0
81Shadow Settings影の設定0
823-D Settings3-D の設定0
83Borders罫線0
84Borders罫線0
85Draw Border罫線の作成0
86Chart Typeグラフの種類0
87Patternパターン0
88Font Colorフォントの色0
89Fill Color塗りつぶしの色0
90Line Color線の色0
91Drawing and Writing Pens描画と書き込みペン0
92Annotation Pensインク注釈ペン0
93Drawing and Writing Pens描画と書き込みペン0
94Annotation Pensインク注釈ペン0
95Order順序0
96Nudge微調整0
97Align or Distribute配置/整列0
98Rotate or Flip回転/反転0
99Lines線0
100Connectorsコネクタ0
101AutoShapesオートシェイプ0
102Callouts吹き出し0
103Flowchartフローチャート0
104Block Arrowsブロック矢印0
105Stars & Banners星とリボン0
106Basic Shapes基本図形0
107Insert Shape図形の挿入0
108Shapes図形2
109Inactive Chartアクティブでないグラフ2
110Excel ControlExcel コントロール2
111Curve曲線2
112Curve Node結節点を曲げる2
113Curve Segment線分を曲げる2
114Pictures Context Menu図ショートカット メニュー2
115OLE ObjectOLE オブジェクト2
116ActiveX ControlActiveX コントロール2
117WordArt Context Menuワードアート ショートカット メニュー2
118Rotate Mode回転モード2
119Connectorコネクタ2
120Script Anchor Popupスクリプト アンカーのポップアップ2
121Canvas PopupCanvas Popup2
122Organization Chart PopupOrganization Chart Popup2
123Diagramダイアグラム2
124Layoutレイアウト2
125Select選択2
126Task Pane作業ウィンドウ0
127 0
128Property Editorプロパティ エディタ0
129Office ClipboardOffice クリップボード0
130XML SourceXML ソース0
131Researchリサーチ0
132XML DocumentXML ドキュメント0
133Signatures署名0
134Document Actionsドキュメント アクション0
135Clip Artクリップ アート0

補足日時:2011/03/10 11:30
    • good
    • 0
この回答へのお礼

有難う御座います。結果がでました。
migi_addTagを実行しますと、「Message!」と表示され、ちゃんと稼動しました。
ところが、現象が変わってきました。
リセットしますと、今度は右クリックで何も表示されなくなりました。
これまでこのサイトに載せたロジックをいろいろ試してみましたが変化ありません。

一番疑わしいのは、PDFMakerだと思うのですが、ご利用されていると言う事で削除が出来ません。
最新バージョンにアップデートしてみましたが、同じです。
理解できないのは、ご利用されているACROBATは9.3.2なのですが、9.4.2のアップデートをインストールしようとするとバージョンが違うと怒られました。
ADOBEはこんな細かいバージョンまで区別しているのでしょうか。
まあ、それは良いとしまして、以下が結果です。

indexnamenamelocaltype
1Worksheet Menu Barワークシート メニュー バー1
2Chart Menu Barグラフ メニュー バー1
3WordArtワードアート0
4Picture図0
5Drawing Canvas描画キャンバス0
6Organization Chart組織図0
7Diagram図表0
8Ink Drawing and Writingインク描画と書き込み0
9Ink Annotationsインク注釈0
10Circular Reference循環参照0
11Cellセル2
12Cellセル2
13Column列2
14Standard標準0
15Formatting書式設定0
16PivotTableピボットテーブル0
17Chartグラフ0
18Reviewingチェック/コメント0
19Formsフォーム0
20Stop Recording記録終了0
21External Data外部データ0
22Formula Auditingワークシート分析0
23Full Screen全画面表示0
24PivotChart Menuピボットグラフ メニュー2
25Visual BasicVisual Basic0
26WebWeb0
27Control Toolboxコントロール ツールボックス0
28Exit Design Modeデザイン モードの終了0
29Refresh最新の情報に更新0
30Watch Windowウォッチ ウィンドウ0
31PivotTable Field Listピボットテーブルのフィールド リスト0
32PivotChart Filter Paneピボットグラフ フィルタ ウィンドウ0
33Borders罫線0
34Protection保護0
35Text To Speech読み上げ0
36Listリスト0
37Compare Side by Side並べて比較0
38Workbook tabsブック見出し2
39Row行2
40Column列2
41Row行2
42PlyPly2
43XLM CellXLM セル2
44Documentドキュメント2
45Desktopデスクトップ2
46Nondefault Drag and Dropドラッグ アンド ドロップ (既定以外)2
47AutoFillオートフィル2
48Buttonボタン2
49Dialogダイアログ2
50Series系列2
51Plot Areaプロット エリア2
52Floor and Walls床面と壁面2
53Trendline近似曲線2
54Chartグラフ2
55Format Data Seriesデータ系列の書式設定2
56Format Axis軸の書式設定2
57Format Legend Entry凡例項目の書式設定2
58Formula Bar数式バー2
59PivotTable Context Menuピボットテーブル ショートカット メニュー2
60Queryクエリ2
61Query Layoutクエリのレイアウト2
62AutoCalculate選択範囲計算2
63Object/Plotオブジェクト/プロット エリア2
64Title Bar (Charting)タイトル バー (グラフ作成)2
65Layoutレイアウト2

お礼日時:2011/03/10 11:29

>でも、今回の問題は標準の表示で発生しています。


ぅーん..そうですか。
別にエラーが出てるわけではないのですよね。
そういった事態には遭遇した事ないですし、あまり聞いた事もありません..
#ご存知の方のレスを待って頂いたほうが良いかも。

手探り状態で原因を探るとすれば、
その現象が出るお客様側で、簡略化したコードのテストをしてもらったほうが良いです。
例えば
Sub cbTest()
  Dim icbc As CommandBarControl

  With Application.CommandBars("cell")
    MsgBox "id: " & .Index & vbLf & "protection: " & .Protection
    .Reset
    For Each icbc In .Controls
      icbc.Delete
    Next icbc
    .Controls.Add(Type:=msoControlButton, Temporary:=True).Caption = "test"
    .ShowPopup
  End With
End Sub
これでどんなメッセージが出るか、
一連の流れで ShowPopup まで実行しますから、どんな結果が表示されるか、
など対話方式でチェックしていくしかないような。
#まずは質問者様側の2007の環境でテストしてみたほうが良いです。

テスト後には元に戻す処理も必要です。
Sub cbReset()
  Application.CommandBars("cell").Reset
End Sub

この回答への補足

お礼

有難う御座います。
試してみましたところ、
id:11
Protection:22
と出ました。
その後、「test」と表示されました。

気になったのですが、先方のExcelに、「ホーム」「挿入」・・・の並びに、
「Acrobat」というものが追加されていました。
また、アドインを見ますと、「PeportTools」というものがありました。
何か関係あるのでしょうか?

P.S. Excel12.xlbが悪さしているのではと思い、検索してみましたが、見つかりませんでした。

補足日時:2011/03/09 17:38
    • good
    • 0
この回答へのお礼

有難う御座います。
近々に試してみます。

お礼日時:2011/03/08 18:28

2007に限らず、ある作業環境化ではそのマクロは機能しません。


「改ページプレビュー」で作業している時です。

Sub test()
  Dim cb As CommandBar

  For Each cb In Application.CommandBars
    Select Case cb.Name
    Case "Cell"
      MsgBox cb.Index & "::" & cb.Name
    End Select
  Next
End Sub

"Cell"、"Column"、"Row"のCommandBarは
それぞれ2個ずつあります。
「標準」ウィンドウ用と「改ページプレビュー」用です。
制御するのであれば、上記のようにLoop&名前判定などで
両方のCommandBarに対して処理する必要があります。

#その画像って..?
#たんなる添付ミス..です..よね?
    • good
    • 0
この回答へのお礼

ご回答頂きまして有難う御座います。
「改ページプレビュー」で効かないことは知りませんでした。
勉強になりました。
でも、今回の問題は標準の表示で発生しています。

#画像は添付しなければならないのかと思い、適当に添付したものです。
 どうもすみません。

お礼日時:2011/03/08 15:12

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!