[[20221109154609]] 『CommandBars.FindControl(ID:=1849)を復活させたax(稲葉) ページの最後に飛ぶ

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

 

『CommandBars.FindControl(ID:=1849)を復活させたい』(稲葉)

 お世話になっております。
 古参の皆様はおひさしぶりです。

 早速ですが、タイトル通り検索と置換ダイヤログを誤って消して(Delete)しまったため
 CommandBars.FindControl(ID:=1849)を復活させたいです。

 Ctrl+F
  ↓
 検索する
  ↓
 ヒットした行のH列のセルを選択
  ↓
 検索と置換ダイヤログを閉じる ←これをやるときに、順番にプロパティとメソッド試してて消してしまいました・・・

 ちなみに、現在は泥臭くsendkeyでESC送ってます。

 お手数おかけいたしますが、何卒お力添え賜りたくよろしくお願い申し上げます。

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


 意味が全然わからないです

 >検索と置換ダイヤログを誤って消して(Delete)しまった
 「消した」の意味がわかりません。どこからなにを消したんですか? 

 >CommandBars.FindControl(ID:=1849)を復活
 「復活」の意味は何ですか? どこかに何があればいいんですか?
 
 >現在は泥臭くsendkeyでESC送ってます。
 VBAの話ですか? 自作のマクロを消してしまったということですか?
(´・ω・`) 2022/11/09(水) 17:14:44

 実験結果です。

    With CommandBars("Edit").FindControl(ID:=1849)
        .Delete '消せた
    End With

    With CommandBars("Edit").FindControl(ID:=1849)
        .Parent.Reset 'エラーがでちゃった
        Debug.Print .Caption
    End With
 '復活できない。再起動後もダメ

 '「%APPDATA%\Microsoft\Excel\Excel??.xlsb」 を削除して再起動

    With CommandBars("Edit").FindControl(ID:=1849)
        Debug.Print .Caption 'お! 復活したっぽいな
    End With

(白茶) 2022/11/09(水) 17:14:55


 ごめんなさい。 拡張子間違ったス^^;

 >'「%APPDATA%\Microsoft\Excel\Excel??.xlsb」 を削除して再起動
  '「%APPDATA%\Microsoft\Excel\Excel??.xlb」 を削除して再起動

(白茶) 2022/11/09(水) 17:17:11


 Addメソッドで復活って出来ないんですか?

 出来ないと困るので、私はDeleteのテストはしていませんが・・

(半平太) 2022/11/09(水) 17:33:11


 実験2

    Sub Test2()
        Dim c As CommandBarControl
        For Each c In CommandBars("Edit").Controls
            Debug.Print c.Index, c.ID, c.Caption
        Next
	    With CommandBars("Edit").FindControl(ID:=1849)
	        .Delete
	    End With
	    With CommandBars("Edit").Controls.Add(ID:=1849)
	        Debug.Print .Caption
	    End With
	    Debug.Print
        For Each c In CommandBars("Edit").Controls
            Debug.Print c.Index, c.ID, c.Caption
        Next
    End Sub

 ↓結果です
 1             128          元に戻せません(&U)
 2             37           繰り返し(&R) 表示しない??
 3             21           切り取り(&T)
 4             19           コピー??(&C)
 5             809          Office ??クリップボード(&B)...
 6             22           貼り付け(&P)
 7             755          形式を選択して??貼り付け(&S)...
 8             2787         ハイパーリンクとして??貼り付け(&H)
 9             30020        フィル(&I)
 10            30021        クリア??(&A)
 11            478          削除(&D)...
 12            847          シートの??削除(&L)
 13            848          シートの??移動またはコピー(&M)...
 14            1849         検索??(&F)...
 15            313          置換??(&E)...
 16            757          ジャンプ??(&G)...
 17            759          リンクの??設定(&K)...
 18            961          オブジェクト(&O)
 19            30019        オブジェクト(&O)
 検索??(&F)...

 1             128          元に戻せません(&U)
 2             37           繰り返し(&R) 表示しない??
 3             21           切り取り(&T)
 4             19           コピー??(&C)
 5             809          Office ??クリップボード(&B)...
 6             22           貼り付け(&P)
 7             755          形式を選択して??貼り付け(&S)...
 8             2787         ハイパーリンクとして??貼り付け(&H)
 9             30020        フィル(&I)
 10            30021        クリア??(&A)
 11            478          削除(&D)...
 12            847          シートの??削除(&L)
 13            848          シートの??移動またはコピー(&M)...
 14            313          置換??(&E)...
 15            757          ジャンプ??(&G)...
 16            759          リンクの??設定(&K)...
 17            961          オブジェクト(&O)
 18            30019        オブジェクト(&O)
 19            1849         検索??(&F)...

 再起動後にイミディエイトで...
 ?CommandBars("Edit").FindControl(ID:=1849).Caption
 検索??(&F)...

 Addでも大丈夫ですね。
 当然順番は変わってますけど、どうせ[編集]バーなんて見えないですし^^;

(白茶) 2022/11/09(水) 17:47:19


 (´・ω・`) さん
 横着が過ぎました。VBAの話になります。
 下記コードのコメントアウトの通り、誤ってCommandBarsの規定のIDを削除してしまい、再度設定(復帰)する手筈が分からず質問させていただきました。
 改めて読み返しても、説明が足りておりませんでした。
 重ねてお詫び申し上げます。

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        'Ctrl+Fで検索して、ヒットしたA列が選択されたら、その行のH列を選択して、検索と置換のダイヤログを閉じる
        If Intersect(Target, Me.Range("A1:A100")) Is Nothing Then Exit Sub
        Application.EnableEvents = False
        Me.Range(Target.Row, "H").Select
        SendKeys "{ESC}"
        'Application.CommandBars.FindControl(ID:=1849).Delete '←これを試して消したものの、そのパソコンから呼び出せなくなって困ってた
        Application.EnableEvents = True
    End Sub

 白茶さん
 無事、復帰させることができました。
 説明が足りないところ、補っていただき大変助かりました。
 追加検証もありがとうございます。
 AddでID指定するだけでいいんですね・・・。
 勉強になりました。
 ありがとうございます。

 半平太さん
 Addの後に何を指定すればよいのか、皆目見当つかず、テストもしておりませんでした。
 ただただIDを指定すればよかったのですね・・・。
 不勉強でした。
 ありがとうございます。

(稲葉) 2022/11/09(水) 17:52:01


コメント返信:

[ 一覧(最新更新順) ]


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