2016-09-08 8 views
1

この式でエラー:セル内でこの式でR1C1形式の負の行参照結果は#REF! VBAでのスプレッドシート

ActiveCell.FormulaR1C1 = _ 
     "=IF(RC[-6]=""ADD"",CONCATENATE(""QUIET "",RC[-6],"" "",RC[-5],"" "",RC[-4],"" "",RC[-3],"" "",RC[-2]),IF(RC[-6]=""DEL"",CONCATENATE(""QUIET "",RC[-6],"" "",RC[-5],"" "",RC[-4]),IF(OR(**R[-1]C[-6]**=""ADD"",**R[-1]C[-6]**=""DEL""),""//FacultyAG EOJ"","""")))" 

結果:

=IF(RC[-6]="ADD",CONCATENATE("QUIET ",RC[-6]," ",RC[-5]," ",RC[-4]," ",RC[-3]," ",RC[-2]),IF(RC[-6]="DEL",CONCATENATE("QUIET ",RC[-6]," ",RC[-5]," ",RC[-4]),IF(OR(**#REF!**="ADD",**#REF!**="DEL"),"//FacultyAG EOJ",""))) 

私は手動(「オン」相対アドレッシング)forumlaを変更することができ、それが動作します。しかし、VBAが形式的なものを置くときはいつでも、私はこれらの#REFを手に入れます!エラー。これらの-6行の参照のようです。 (-6有効な列(「1」)である。)

+0

アクティブセルが1行目に入っていませんか?数式を配置した後にデータを移動しますか?数式を配置した後に行を削除しますか? –

+0

あなたは間違いなく数式を1行目に入れませんか? (つまり、行0を参照しようとしていますか?) – YowE3K

+0

私は言っておくべきです:私は手動でforumla(相対アドレス指定 "on")を変更することができ、それは動作します。しかし、VBAが形式的なものを置くときはいつでも、私はこれらの#REFを手に入れます!エラー。これらの-6列の参照のようです。 (6は有効な列( "1")です)式は列7にあります。相対アドレス指定がオンの場合の列1は列Aです。式を配置した後に列、行またはセルを移動または削除しません。 –

答えて

0

問題は、列1のセルに数式を挿入するため

R[-1]C[-6]は、上記セル一行を指し、6個の細胞に起こります数式が配置されているセルの左に、数式が行1に配置されている場合は、行0のセルを参照していることを意味しますが、これは無効です。これにより#REF!エラーが発生し、たとえその上にヘッダー行を挿入するなどしてセルを移動しても、Excelはもはやそれが何を意味するのか分かりませんので、#REF!は修正できません。

解決策は、最初に数式を配置していたセルが、数式が実際に有効になるセルであることを確認することです。

関連する問題