2017-02-03 9 views
2

現在、以下のコードを実行しようとしています。動的数式を設定するVBA

Sub TabRef() 
crag = ActiveCell.Value 
crag = Replace(Replace(Replace(crag, " ", "_"), "-", "_"), ",", "_") 
Selection.Offset(0, 2).Select 
MsgBox (crag) 
MsgBox ("=" & crag & "[[#Totals],[Route Name]]") 
ActiveCell.Formula = "=" & crag & "[[#Totals],[Route Name]]" 
Selection.Offset(0, 2).Select 
ActiveCell.FormulaR1C1 = "=" & crag & "[[#Totals],[Stars]]/" & crag & "[[#Totals],[Route Name]]" 
Selection.Offset(0, 1).Select 
ActiveCell.FormulaR1C1 = "=" & crag & "[[#Totals],[Rating 3]]/" & crag & "[[#Totals],[Route Name]]" 

End Sub 

私は一度これを実行し、それは完全に正常に動作しますが、私は再びそれを実行して取得します「ファイル名を指定して実行時エラー 『1004』:アプリケーション定義またはオブジェクト定義のエラーは、」なぜそれ私は理解していませんこれらの表の表と列が定義されている場合、1つのセルで動作しますが、別のセルでは動作しません。

+2

どのラインでエラーが表示されますか? –

+0

ActiveCell.Formula = "="&crag& "[[#Totals]、[Route Name]]" –

答えて

0

問題は、アクティブセルの元の値が何であるかにあります。数式でテキストを引用符で囲むことなくテキストを使用することはできません。そうでない場合、Excelは名前付き範囲またはリストオブジェクトと判断します。この行、

ActiveCell.Formula = "=" & crag & "[[#Totals],[Route Name]]" 

...セルの値がテキストの場合は、Run time error: 1004で失敗します。それを次のように変更してください:

ActiveCell.Formula = "'=" & Chr(34) & crag & Chr(34) & Chr(38) & "[[#Totals],[Route Name]]" 

これは、コメント付きの数式をセルに入れるには十分であるはずです。ワークシートに戻って、リスト・オブジェクト・テーブル参照を使用して式を調整します。数式を作成したら、新しい式に合わせてVBAを調整します。

私はもっと正確ではないことをお詫びしますが、あなたのリストオブジェクトテーブルの参照は、間違いなく私を困らせました。

MsgBoxの代わりにDebug.Printを使用し、イミディエイトウィンドウ(Ctrl + G)の結果に従うこともできます。

+0

オブジェクトを参照しようとしていますが、テキストの後ろに余分なスペースがある数式がオブジェクトをポイントしないようにします。あなたが私に与えたコードを試してみると、これが分かりました。ありがとうございました –

関連する問題