重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

FormulaR1C1ではなく
Range形式でVBAでワークシート関数をセルにいれるコードを書くにはどうすればいいでしょう?

Sub Macro()
ActiveCell.FormulaR1C1 = "=LEN(RC[-1])"
End Sub

これを
Sub Macro()
ActiveCell.FormulaR1C1 = "=LEN(a1)"
End Sub

こうすると、
数式バーには、=LEN('a1')と入っており、
セルの値は#NAME?
になります。

アポストロフィーが余計なのですがどうすれば取れますか?

A 回答 (3件)

余り、Rangeプロパティに拘らなくてもよいと思います。


単にActiveCell = "=LEN(A1)" や ActiveCell = "=LEN(r1c1)" で十分です。
Formula、FormulaR1C1を付けなくてもエクセルが左辺が数式(=付き)ならば自動認識して格納先のプロパティ部に設定してくれます。
    • good
    • 0
この回答へのお礼

ありがとうございます。

お礼日時:2013/02/20 20:55

#1さんの回答がVBAのコードとして正解です。



ActiveCell.FormulaR1C1 というのは、R1C1方式で、右辺を書いてください、という意味ですから、

ActiveCell.FormulaR1C1 = "=LEN(a1)"
R1C1方式に、A1方式の数式を入れようとしても、R1C1方式では、存在しないセルの情報ですから、'a1'となります。

ちなみに、ActiveCell.Formula は、A1方式でも、R1C1方式でも、どちらでも代入が可能ですから、ヘルプの内容が間違っているかもしれません。

ただ、場合によってFormulaLocal も必要になることがありますから、それらの違いは、一度ヘルプで調べてみてください。
    • good
    • 0
この回答へのお礼

ありがとうございます。

お礼日時:2013/02/20 20:55

A1参照形式の場合はFormulaプロパティになります。


ActiveCell.Formula = "=LEN(a1)"
    • good
    • 0
この回答へのお礼

ありがとうございます。

お礼日時:2013/02/20 20:55

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!