2

Access 2010 で動作するように古い VBA コードを更新しています。発生した問題の 1 つは、右クリックしてもショートカット メニューが表示されないことです。そのため、ショートカット メニューを作成し、それを Application オブジェクトにバインドします...

Application.ShortcutMenuBar = "GeneralClipboardMenu"

一般に、これは機能しますが、詳細ペインで「Excel グリッドとして使用している列」を右クリックしても、メニューは表示されません。この側面はアプリケーションの使用にとって重要であるため、無視することはできません。

コードのどこにも、無効になっているショートカット メニューはありません。また、ショートカット メニューが 2010 Office スーツのリボンに置き換えられていることも認識していますが、右クリックは理想的に維持したい基本機能です。

どんな助けでも大歓迎です。関連する場合に備えて、ショートカット メニューを作成するためのコードを次に示します。

Sub CreateSimpleShortcutMenu()
  On Error Resume Next 'If menu with same name exists delete
  CommandBars("GeneralClipboardMenu").Delete
  Dim cmb As CommandBar
  Set cmb = CommandBars.Add("GeneralClipboardMenu", msoBarPopup, False, False)
      With cmb
          .Controls.Add msoControlButton, 21, , , True   ' Cut
          .Controls.Add msoControlButton, 19, , , True   ' Copy
          .Controls.Add msoControlButton, 22, , , True   ' Paste
          .Controls.Add msoControlButton, 4016, , , True 'Sort Ascending
          .Controls.Add msoControlButton, 4017, , , True 'Sort Decending
      End With
  Set cmb = Nothing
End Sub
4

3 に答える 3

1

実際、満足のいく回避策を発見しました。列を右クリックできるようにする必要がある唯一の理由は、並べ替えのためでした。セルを右クリックしたときに最初に持っていたコードを使用すると、並べ替えオプションがグレー表示されました。ただし、並べ替えコマンドにはいくつかの ID があり、それらはすべて異なる機能を持っているようです。

http://support.microsoft.com/kb/159466

上記のリンクには、ショートカット メニューで使用できる ID のリストがあります。

2010 の詳細ペインの列全体に右クリック機能を追加する方法はないと確信しています。メニューを無効にすることはどこにもありませんでした。それを実行できるコマンドを検索し、プロパティをトリプルチェックしました。

于 2012-06-28T17:10:14.743 に答える
1

アプリケーション全体のショートカット メニュー バーは、DAO データベースのプロパティだと思います。GUI の [アクセス オプション] > [現在のデータベース] > [リボンとツールバーのオプション] で変更できます。

次のコードを使用して変更することもできます。

UpdateCustomProperty("StartupShortcutMenuBar", "NameOfMyCustomShortcutMenuBar")

Private Function CreateCustomProperty(ByVal sPropertyName As String, _
                                        ByVal sPropertyValue As String)
    On Error Resume Next

    If sPropertyName <> "" And sPropertyValue <> "" Then
        Dim p1 As DAO.Property
        Set p1 = CurrentDb.CreateProperty(sPropertyName, DB_TEXT, sPropertyValue)
        CurrentDb.Properties.Append p1
        Set p1 = Nothing
    End If

End Function

Public Function UpdateCustomProperty(ByVal sPropertyName As String, _
                                    ByVal sPropertyValue As String)
    On Error Resume Next

    If sPropertyName <> "" And sPropertyValue <> "" Then
        CurrentDb.Properties(sPropertyName) = sPropertyValue
        If Err.Number = 3270 Then
            Err.Clear
            Call CreateCustomProperty(sPropertyName, sPropertyValue)
        End If
    End If
    Err.Clear
End Function
于 2012-06-28T15:17:12.983 に答える
0

1 つの可能性として、フォームのプロパティで [ショートカット メニュー] が [いいえ] に設定されていることが考えられます。これらにアクセスするには、フォームをデザイン ビューで表示し、次にフォーム プロパティを表示して、[ショートカット メニュー] 設定を確認します。「はい」に設定する必要があります。

于 2012-06-27T18:02:42.997 に答える