アプリ版:「スタンプのみでお礼する」機能のリリースについて

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を理解していないので、間違っているのかもしれませんが、
御教授お願い致します。

A 回答 (2件)

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



これができるなら、

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

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

Selection.Formula = "=formula!B" & CStr(P + 5)
にしてみましょう。
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/04/08 16:18

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



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

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

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

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

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

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

お礼日時:2009/04/08 16:30

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