こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

ExcelVBAの配列変数で一括でセルに数式を挿入する方法

ExcelVBAの配列変数で一括でセルに数式を挿入する方法

ExcelVBAでTEST1シートを参照して、TEST2シートに数式を貼り付けたいと思っています。

例えばTEST2シートのA1セルには、TEST1シートのA1を参照する数式
=IF('TEST1'!A1="","",'TEST1'!A1))を挿入、

TEST2シートのA2セルには、TEST1シートのA2を参照する数式
=IF('TEST1'!A2="","",'TEST1'!A2))を挿入、

それをA1セルからZ10セルまで同様に数式を挿入したいと思っています。

以下のように配列変数を用いて、一括で挿入すると数式ではなく、文字が入ってしまいます。

Sheets("TEST2").Cells(1, 1).Resize(10, 26).Formula = SUSHIKI
※SUSHIKI←数式を入れた配列

どのような記述を行えば、数式を貼り付けることができるができるでしょうか。
できればOffsetを使用した形で作成したいです。

どうかご教授お願い致します。

投稿日時 - 2009-12-21 23:33:10

QNo.5539024

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.4

例:
Range("A2") = "=B1+C1"

のようにすればできますが・・・

参考:
■5.3 セルへ文字列、数値、数式を書込む1
http://www.happy2-island.com/excelsmile/smile03/capter00503.shtml

参考URL:http://www.happy2-island.com/excelsmile/smile03/capter00503.shtml

投稿日時 - 2009-12-24 16:52:01

ANo.3

#2です。
語読力が弱くて申し訳ないのですが、
>配列変数をエクセルにみたて
というのは
SUSHIKI(1,1)をA1と見立てて
SUSHIKI(26,10)をZ10と見立てるという意味でしょうか?

因みに
>Sheets("TEST2").Cells(1, 1).Resize(10, 26).Formula = SUSHIKI
をテストして見ましたが文字ではなく数式が入りました。
変数SUSHIKIに格納されているデータは間違いなく数式が入っていますでしょうか?
SUSHIKI = Range("TEST2!A1").Formula '数式格納
SUSHIKI = Range("TEST2!A1").Value '文字格納
再度確認願います。

投稿日時 - 2009-12-22 15:39:52

ANo.2

こんにちは。
確認したい点がございます。
配列変数SUSHIKIに格納されているデータもしくは格納するコードが分かれば提示願います。
また、Offsetを使用したいというのは何らかの意味があってとの事でしょうか?
ただ数式を指定範囲に貼り付けたいのであれば
Sub TEST()
Sheets("TEST2").Select
Range("A1").Copy
Range("A1:Z10").PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
Range("A1").Select
End Sub
で動作します。
補足をお待ちしております。

投稿日時 - 2009-12-22 10:34:41

お礼

ご回答ありがとうございます。
コピー以外の方法で処理を行いたかったものでして。
数式も例のもの以外に、フラグによってループ処理の上で変更したりと
色々応用してみたかったんです。

配列変数をエクセルにみたて、
様々な数式を配列変数に挿入した場合には、
エクセルに一括して吐き出すことが可能なのかなと思いまして。

投稿日時 - 2009-12-22 13:45:20

ANo.1

別に配列もoffsetも必要ないと思うけど
>Sheets("TEST2").Cells(1, 1).Resize(10, 26).Formula = SUSHIKI

Sheets("TEST2").Cells(1, 1).Resize(10, 26).Formula = "=IF(TEST1!A1="""","""",TEST1!A1)"
で試してみて

参考まで

投稿日時 - 2009-12-21 23:58:23

お礼

ご回答ありがとうございます。
この形を応用することでやりたかったことができそうです。

投稿日時 - 2009-12-22 13:39:17

あなたにオススメの質問