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

Range(Cells1, Cells2)=Arr
のように2次元配列からセル範囲に一気代入が可能ですが、Value扱いでFormulaになりません。
"=A1+B1"のように文字列が表示されます。セルをアクティブにして、文字列をちょっと触り編集したかのようにした後リターン押すと、関数式になります。

何か方法はあるでしょうか?もちろん配列にする位だから、データ数は結構あります。

A 回答 (2件)

こんにちは。



ふつう、セルに数式を入れるというのは、別の方法だと思いますが、

Dim arr(1 To 1, 1 To 2) As Variant '2次元
Dim frml1 As String
Dim frml2 As String
frml1 = "=A1+B1"
frml2 = "=A3+B5"
arr(1, 1) = frml1
arr(1, 2) = frml2
Range("A10", "B10").Value = arr

特に問題はありませんね。

>"=A1+B1"のように文字列が表示されます。
これは、別の要因(書式)のようですね。

その場合は、このようにすればよいはずです。
Range("A10", "B10").ClearFormats

Range("A10", "B10").Value = arr '書式をきれいにしてから入れればよいはずです。
    • good
    • 1
この回答へのお礼

ありがとうございます。
原因が分りました。
Sub macro()
Dim S(1 To 2, 1 To 1) As String
S(1, 1) = "=A1+B1"
S(2, 1) = "=A2+B2"
Range(Cells(1, "C"), Cells(2, "C")).Formula = S
End Sub

Stringで宣言してました。Variantにしたら動きました。ネットで改めて確認すると、こっそりVariantで宣言してます。
何故Stringはダメなのでしょう?

お礼日時:2016/04/20 00:23

単独で式を書き込む場合と同様に、Formulaプロパティに書き込めば如何でしょう。



Sub test()
Dim ary As Variant
ary = Array("=A1+B1", "=A2+B2")

Range("C1:C2").Formula = ary
End Sub
    • good
    • 1
この回答へのお礼

ありがとうございます。
原因が分りました。aryの宣言を
Dim ary(1 to 1,1 to 1) as String
と文字列配列で宣言してました。String→Variantに修正したら、うまく出来ました。
出来たけど、、、なんでダメなのですか?

お礼日時:2016/04/20 00:10

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

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報

このQ&Aを見た人がよく見るQ&A