午後わてんのブログ

ベランダ菜園とWindows用アプリ作成(WPFとC#)

その31、連続モードでテーマカラー、致命的バグの回避

前回は3日前

gogowaten.hatenablog.com

の続き

 

連続モードの時において

エクセルの戻るボタンでエクセルが強制終了してしまうのを修正
テーマカラーでも指定できるようにした
レイアウト変更
エクセル2010のマクロで枠がつかないバグに対応したかも
 
 
Office TANAKA - Excel 2010レビュー[マクロで罫線を引けないバグ]
こちらを参考にして
エクセル2010でも枠が付くようにしたつもり
エクセル2007より新しいのは持っていないので確認できないんだけど
多分大丈夫
 
 
連続モードの時にテーマカラーでも指定できるようにした

excel animation13_4.gif
テーマカラーのパレット(テーマ用)とRGB指定のパレット(RGBテーマ)の
それぞれで色を指定したあとに
ブックのテーマ(配色)を変更して違いを見たところ
テーマ用では配色の変更に合わせて指定した色も変化している
 
 
レイアウト変更

f:id:gogowaten:20191018152831p:plain

連続モードのほうが使う頻度が高いからパレットに近い方に移動した
色の作成は別のアドインの午後の色作成の方が使いやすいってのもある
(のが多い)
 
 
 
連続モードの時にある条件でエクセルが強制終了してしまうのを修正
イメージ 1
連続モードにチェックが入った状態で
エクセルの戻るボタンを押す、
またはそのショートカットキーのCtrl+zを押すと
 
エクセルが強制終了!!!
イメージ 2
エクセルと同時にこっちの心臓まで停止してしまいそうなので
修正した
 
ダウンロード先
ファイル名:午後のパレット_20150606.xlam
 
 
 
イメージ 3
連続モードにチェックが入った状態では元に戻すボタンは
無効状態の時が多いんだけど、たまに有効になっている時があって
調べてみてわかったのが
ワークシートイベントのWorksheet_SelectionChange
これに引っかからない操作を行った時に有効になっていた
これはアクティブセルの位置が変化しないような操作で
具体例は
Deleteキーでセルの値をクリア
セルの編集終了時(セルの値決定時)にCtrl+Enterキーを押す
セルに貼り付け
など
 
エクセルの仕様としてセルに変更を加えるマクロを動かすと
元に戻すボタンのための操作履歴が削除されて、元に戻すボタンは無効状態になる
 
連続モードはSelectionChangeイベントを使って動かしているマクロなので、
セルに貼り付けの操作でエクセルの元に戻すボタンは有効になってしまい
これを押してしまうとエクセルが強制終了してしまうっていう流れ
なんで強制終了になってしまうかは全くわからない、なんか色々やっているんだと思う
 
解決するには
連続モードの時はエクセルの元に戻すボタンを常に無効状態にする
っていうのを思いつくけどググってみたらかなり大変そうなので諦めて
SelectionChangeイベントに引っかからないセル操作でも検知してくれる
Changeイベントっていうのが見つかって、これで何とかした
Changeイベントに当たり障りのない何もしないマクロを書いておけば
セルに貼り付けした時に動いてくれて、その結果マクロが動いたから元に戻すボタンは無効になってくれるわけ
 
そして、ほぼ何もしない意味のない重要なマクロができあがった
 
Private Sub mySheetE_Change(ByVal Target As Range)
    Application.EnableEvents = False 'このイベント自体の無限ループを防ぐ
    If Me.CheckBoxRen連続塗り_テーマ用 Then
        Target.Copy Target
    End If
    Application.EnableEvents = True
End Sub
 
セルをコピーしてそのまま同じ場所にペーストするマクロ
もっと意味のない動きにしたいけど
これで不具合は回避できているようにみえる
それにしてもエクセルを強制終了させるほど強力な不具合に
昨日まで全く気づいていなかったってのがすごい
完成したって言ったそばからこれだもんなあ
 
続きは1週間後