マクロによる数式のコピペが反映されない場合がある。

マクロによる数式のコピペが反映されない場合がある。
0

Upvotes

Upvote

 Jan 01 2021
3 Comments (3 New)
Working on it

行の挿入やクリアを行った時に、その直前行から数式をコピペしてくる処理を、 Workbook_SheetChangeイベントに実装していますが、
11月頃からこのマクロによる式のコピペが行の挿入を行った時に反映されない現象が発生するようになり困っています。
DELキーによる行クリアを行った時には反映されます。

該当個所のマクロのコードは
  Set FRR = .Cells(UTOPR - 1, C)           'コピペ元セル
  Set TOR = .Range(.Cells(UTOPR, C), .Cells(UBOTR, C)) 'コピペ先セル
  FRR.Copy
  TOR.PasteSpecial Paste:=xlPasteFormulas
  Debug.Print Time, "FormulaPast", Sh.Name, _
              "Fr=" & FRR.Address, FRR.HasFormula, Left(FRR.Formula & Space(24), 24), _
              "To=" & TOR.Address, TOR.HasFormula, Left(TOR.Formula & Space(24), 24)

となっていて、
行挿入した時の上記Debug.Printの結果は
 11:32:07  FormulaPast   FKシート
            Fr=$H$72  True  =IF(OR(ROW()=ROW($69:$69 
            To=$H$73  False                          
であり、行クリアを行った時は
 11:33:11  FormulaPast   FKシート
            Fr=$H$72  True  =IF(OR(ROW()=ROW($69:$69 
            To=$H$73  True  =IF(OR(ROW()=ROW($69:$69
となっています。

Excelは,Excel2016 バージョン2011-13426.20404 です。

シートの現物、および、現象発生時の診断ログを添付します。

なお、excelからのフィードバックは送信済です。(1/2 11:53頃)

Comments
Copper Contributor
追加情報です。 同現象が別PC(仮想PC・Office365)でも発生する事を確認しました。 EXCELは、V2002-12527.21330です。 なお、このexcel環境からは事情によりフィードバック送信ができません。
Copper Contributor
追加情報です。 当現象は、EXCEL2016 バージョン2012-13530.20316 でも発生する事を確認しました。
Copper Contributor
追加情報です。 試行錯誤の結果、引き金となっていると思われる箇所が特定できました。 条件書式の条件式の中にSUMPRODUCT関数による配列計算の個所があり、 これを除去するとExcel2016、o365とも正常に動作するようになりました。 条件式は、 =IF(SUMPRODUCT(・・・USERFUNC(・・・)・・・*1)>0, ・・・,・・・) のようになっていました。 この"USERFUNC"は、結果を配列で返すユーザ定義関数です。 これと現象の間の因果関係は不明ですが、どうも、この条件書式があると様々な異常動作がおきるようです。 観測された範囲では、 ・マクロのコードがスキップされる ・マクロのコード実行に時間がかかる ・マクロ上の中断点が効かない ・Range.SpecialCellsで該当しないセルが取得される ・オブジェクト操作で原因不明のエラーが発生する ・例外コード0xC0000005 でEXCELがクラッシュする などが見られました。 どうも、領域破壊を起こしてその結果、様々な現象につながっているのではないかと想像します。