[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『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.