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

解決済みの質問

excel マクロ Selection.Formula

VBA初心者です。

excelの表に文字を記入して、それをカード化したいと思ってます。

テキストボックスをN回コピーして、それぞれに名前をつけて、またそれぞれにテキストが入力されたセルへ参照先を指定したいのですが、上手くいきません。

Dim n As Integer
'カードのコピー回数はD4のセルを参照
n = Range("input!D4").Value

If n >= 1 Then
ActiveSheet.Shapes("card0").Select
Selection.Copy
ActiveSheet.Paste
Selection.Name = "card1"
Selection.Formula = "=formula!B6"
End If

If n >= 2 Then
ActiveSheet.Shapes("card0").Select
Selection.Copy
ActiveSheet.Paste
Selection.Name = "card2"
Selection.Formula = "=formula!B7"
End If

If n >= 3 Then
ActiveSheet.Shapes("card0").Select
Selection.Copy
ActiveSheet.Paste
Selection.Name = "card3"
Selection.Formula = "=formula!B8"
End If

If n >= 4 Then
ActiveSheet.Shapes("card0").Select
Selection.Copy
ActiveSheet.Paste
Selection.Name = "card4"
Selection.Formula = "=formula!B9"

と延々と50回繰り返してます。

希望は150~200回繰り返したいのですが、
マクロ記録などや他の回答などを参考にしながら、
初心者なりに考えて、


Sub cardproductionA4()
'カードのコピー回数を指定 N=総回数 P=1~N回
Dim N As Integer, P As Integer
N = Range("input!D4").Value

'カードのコピー
For P = 1 To N
If N >= P Then
ActiveSheet.Shapes("card0").Select
Selection.Copy
ActiveSheet.Paste
Selection.Name = "card" & CStr(P)
Selection.Formula = "=formula!B(P+5)"
End If
Next P
End Sub

としました。
でも、参照先が漸次変わっていって欲しいのですが、
Selection.Formula の先がエラーで出来ません。

どのように記述すれば宜しいのでしょうか?
あるいは、そもそもVBAを理解していないので、間違っているのかもしれませんが、
御教授お願い致します。

投稿日時 - 2009-04-08 14:46:58

QNo.4862860

すぐに回答ほしいです

質問者が選んだベストアンサー

Selection.Name = "card" & CStr(P)

これができるなら、

Selection.Formula = "=formula!B(P+5)"

これがどうおかしくて、どうすれば良いかも解る筈なんですけどねぇ。

Selection.Formula = "=formula!B" & CStr(P + 5)
にしてみましょう。

投稿日時 - 2009-04-08 15:00:40

お礼

出来ました!!!
ありがとうございます!!!
確かに、おっしゃるとおりですね、でも目から鱗でした!!!

投稿日時 - 2009-04-08 16:18:32

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

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

回答(2)

ANo.1

検証してませんが、ココまで来るレベルなら分かるでしょう。

Selection.Formula = "=formula!B(P+5)"

これじゃあ「文字列B!(P+5)」がそのまま貼り付けられます。
Pを数字に見なして()内は計算しちゃくれません。

P+5を具体的な数字にして貼り付けたいなら、"=formula・・・"
の文字列全体を計算して作らないとダメですよ。

投稿日時 - 2009-04-08 14:53:44

お礼

御回答ありがとうございます。

Selection.Formula =""
で" "の中身を考えていたのですが、
どうにも分からなかったのです。

でも、なんとなく、方針が掴めそうな気がします。複雑ですね。
アドバイスありがとうございます!!!

投稿日時 - 2009-04-08 16:30:47

あなたにオススメの質問