VSTOメモ
#VSTO #C#
カスタム作業ウィンドウ
VSTOからModeless WPF Windowを呼びだす
別スレッドからWindow.Show()する必要がある
https://stackoverflow.com/questions/5869359/wpf-modeless-dialog-from-ms-excel-add-in
さらにCOMコンポーネントはSTAでないとダメ(キー入力とか上手く取れない)
https://techracho.bpsinc.jp/baba/2010_05_19/1559
ただしSTAにしちゃうと、VSTO側から触るのが困難
WindowではなくControlであれば、ElementHostを介して標示することが可能
https://tech.tanaka733.net/entry/wpf-in-vsto
Model WindowならWindow.ShowDialog()すればOK?
VSTOプロジェクト内にXamlファイルがいると、色々めんどくさくなる?
結果的に、WindowならおとなしくWinForms使ったほうが良さそう
参考
VSTOで複数のユーザコントロールを切り替えるには
https://office-fun.com/techmemo-vsto-usercontrol-switch/
VSTO で WPF を使うには
https://tech.tanaka733.net/entry/wpf-in-vsto
以下、Excel関連
SpecialCellsはSheetSelectionChangeイベントを発火させる
https://stackoverflow.com/questions/19663368/specialcells-causing-sheetselectionchange-event-in-excel-2010
Rangeの最終セル
Target.Item[Target.Rows.Count, Target.Columns.Count]
SpecialCellsはRangeのプロパティだが、Range.CountLarge == 1の時はシート全体を対象とするので注意が必要
検索と置換の検索対象オプション
「値」の場合は、表示されている文字列を対象に検索する
「数式」の場合は、数式の文字列を対象に検索する
ただし、数式が使われてない(=で始まっていない)セルは入力されている値がそのまま数式として扱われる
Range.HasFormula = falseだけど数式としてヒットする
「2」を検索した場合
検索対象が「数式」なら・・・
「=2+2」のセルがヒットする
「2」のセルもヒットする(数式ではないが)
検索対象が「値」なら・・・
「=1+1」のセルがヒットする(表示される文字列が「2」なので)
「2」のセルもヒットする
VSTOでKeyHook
https://office-fun.com/techmemo-vsto-keyhook/