[[20191008081524]] 『右クリックメニューを消す エラーが出る』(喙湲) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『右クリックメニューを消す エラーが出る』(喙湲)

エクセルブックを開くときに、
右クリックメニューの削除、挿入を消そうと
下記の通り記載していますが、エラーとなります。
何が間違っているのかがわからずにおります。
どなた様かお分かりになりますでしょうか?

実行時エラー5
プロシージャの呼び出し、または引数が不正です。

Private Sub Auto_Open()

  CommandBars("Row").Controls("挿入(&I)").Enabled = False
  CommandBars("Row").Controls("削除(&D)").Enabled = False
End Sub

< 使用 Excel:Excel2016、使用 OS:Windows10 >


申し訳ありません
解決しました。
(喙湲) 2019/10/08(火) 08:37

こちら解決とお話ししましたが、
下記コードをthisworkbook へ記載しエクセルを何度か開く、閉じるを繰り返すと、エラーとなってしまいます。
エラーは依然と同じ下記となります。すんなり行けるときと
エラーになる時があり、なぜそうなるのか不明です。。。
ぜひご教授いただければと思います。
開くときに右クリックメニューの挿入、削除を使用不可にし、
閉じるときには戻す作業です。

■実行時エラー5
 プロシージャの呼び出し、または引数が不正です。

■コード■
Private Sub Workbook_Open()
 Application.CommandBars("Row").Controls("挿入(&I)").Enabled = False

  Application.CommandBars("Row").Controls("削除(&D)").Enabled = False
End Sub

Private Sub workbook_Close()

  Application.CommandBars("Row").Controls("挿入(&I)").Enabled = True
  Application.CommandBars("Row").Controls("削除(&D)").Enabled = True
End Sub
(喙湲) 2019/10/09(水) 00:15

設定変更前に、以下の1行を追加し、行を選択状態にしてみては?
    Rows(1).Select
(???) 2019/10/09(水) 11:20

 こうやって回してみるとか・・・・。

 For Each cbc In CommandBars("Row").Controls
    If cbc.ID = 293 Or cbc.ID = 3183 Then
       cbc.Enabled = False
    End If
 Next

 ID番号は、バージョンで違うのでこれで調べて下さい。(多分)
 上記は、office2007

 For Each cbc In CommandBars("Row").Controls
    i = i + 1
    Cells(i, 1).Value = cbc.Caption
    Cells(i, 2).Value = cbc.ID
 Next
(BJ) 2019/10/09(水) 13:06

???さん
お返事ありがとございます。
Rows(1).Select にて実施してみましたが、やはり同じエラーが出ます。

BJさん
お返事ありがとうございます。
下記コードはエラーになりまして、

実行時エラー91
オブジェクト変数またはWITHブロック変数が設定されていません  となります。

 For Each cbc In CommandBars("Row").Controls
    If cbc.ID = 293 Or cbc.ID = 3183 Then
       cbc.Enabled = False
    End If
 Next

またもう一つのコードの意味が分かりません。
こちらも同じ個所に貼り付けましたが
上記と同じエラーとなります。
貼り付け箇所がそれぞれ違いますか?

 For Each cbc In CommandBars("Row").Controls
    i = i + 1
    Cells(i, 1).Value = cbc.Caption
    Cells(i, 2).Value = cbc.ID
 Next

(喙湲) 2019/10/09(水) 21:10


BJさん
下記コードでやってみましたら番号が出てきました。

Dim cbc As Variant

 For Each cbc In Application.CommandBars("Row").Controls
    i = i + 1
    Cells(i, 1).Value = cbc.Caption
    Cells(i, 2).Value = cbc.ID
 Next

その番号で下記の通り埋め込みましたところ無事に動くようになりましたが、
どうやら他の空の通常のエクセルを開き、右クリックメニューを確認すると、
削除、挿入が消えているので、コード記述の閉じるタイミングのどこか変更が必要のようです。

Private Sub Workbook_Open()
Dim cbc As Variant

 For Each cbc In Application.CommandBars("Row").Controls
    If cbc.ID = 293 Or cbc.ID = 3183 Then
       cbc.Enabled = False
    End If
 Next

End Sub

Private Sub workbook_Close()

Dim cbc As Variant

 For Each cbc In Application.CommandBars("Row").Controls
    If cbc.ID = 293 Or cbc.ID = 3183 Then
       cbc.Enabled = True
    End If
 Next

End Sub

(喙湲) 2019/10/09(水) 21:32


 横からすみません。

 >Private Sub workbook_Close() 
  ↑
 それは、これと取り違えていませんか?
      ↓
 Private Sub Workbook_BeforeClose(Cancel As Boolean)

 ※ 私のエクセルにCloseイベントって見つからないので。。

(半平太) 2019/10/09(水) 22:18


半平太さん
お返事ありがとうございます。

Private Sub Workbook_BeforeClose(Cancel As Boolean)へ変更したところ
通常のエクセルを開いたときに挿入、削除が選択できる状態になりました!
なぜこのcloseを利用していたのかはすみませんが不明です。。

いろいろと試している中で再度問題があるのですが、
下記のコードのエクセル開いているときに、別のエクセルを開くと、
そちらのエクセルも挿入、削除が消えたままとなります。
別で開いたものは通常通り使いたいとき、これはやはり避けられないのでしょうか

●thisworkbookへ記入

Private Sub Workbook_Open()
Dim cbc As Variant

 For Each cbc In Application.CommandBars("Row").Controls
    If cbc.ID = 293 Or cbc.ID = 3183 Then
       cbc.Enabled = False
    End If
 Next
End Sub
 Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim cbc As Variant
 For Each cbc In Application.CommandBars("Row").Controls
    If cbc.ID = 293 Or cbc.ID = 3183 Then
       cbc.Enabled = True
    End If
 Next
End Sub

(喙湲) 2019/10/09(水) 22:52


 こんのなのを追加して置けばいいんじゃないですか(こちらでテストはしておりませんが。)

 Private Sub Workbook_Activate()
      Workbook_Open
 End Sub

 Private Sub Workbook_Deactivate()
     Workbook_BeforeClose True
 End Sub

(半平太) 2019/10/09(水) 23:19


半平太さん
お返事ありがとうございます。
いただきましたコードを入れてみましたが、
変化がありませんでした。

いろいろありがとうございます。
(喙湲) 2019/10/10(木) 00:05


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.