2017-09-28 6 views
1

VBA経由で名前マネージャを使用して数式で参照されるセルの名前を付けようとしています。私はVBAシートに正しいセルの位置(の位置が変化するであろう)、変数として定義している:VBAを使用して定義済み変数付きの名前付きセルを作成する

s3form = Range(prog_beg3).Offset(0, 3) 

セルは、アドレスを有するように、私は、名前管理機能を使用してセルに名前を付けます's3form'だが行は可変である。したがって、 's3form = B5'の場合、指定されたセルのアドレスは '$ B5'になります。

ActiveWorkbook.Names.Add Name:=s3_form, RefersTo:=s3form 

ただし、式はs3formをセルとして認識しません。 's3form = $ B $ 5'のときだけセルを認識しているようです。

解決方法はありますか?

+1

'Set'を使う:' Set s3form = Range(prog_beg3).Offset(0、3) 'もちろん' s3form'は範囲として宣言しなければなりません。次に、 'RefersTo:= s3form.Address' –

+0

@ScottCraner試してみると ActiveWorkbook.Names.Add名前:= sform、RefersTo:= s3form.Address 実行時エラー' 424 'が表示されます。オブジェクトが必要です –

+0

コード。あなたの変数はどのように宣言され、値が割り当てられていますか? –

答えて

0

これはそれを行う方法である

ありがとう:

activeworkbook.Names.Add "Testing",[s3form] 

は今、「テスト」s3formする参照のうえ、ワークブック内の名前に追加されます。あなたのコードに関しては、[]を約s3formのように使用するとうまくいくはずです。

一般に、これらの[]は名前付き範囲を参照するのに便利です。あなたはこのようなアドレス、つまり[A1]を参照することもできます。

+0

私はこれを試しましたが、まだ数式は 'セルを認識しません。名前のマネージャーでは、名前が$ I31を参照していると言いますが、これは正しいですが、その値も$ I31です。数式がそれを認識するためには、値を空白にする必要がありますか? –

+0

@ A.Nelson - いくつかの情報が欠落していますが、次のように試してみましょう - > 's3form'を名前付き範囲として宣言した後、値を入力するために、範囲(prog_beg3)。オフセット(0,3) ' – Vityata

関連する問題