ようこそ ゲスト さん、新規登録(無料)して気になる疑問を解決しませんか?

質問

質問者:tkh_tkh 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を理解していないので、間違っているのかもしれませんが、
御教授お願い致します。
質問投稿日時:09/04/08 14:46
質問番号:4862860
この質問に対する回答は締め切られました。
最新から表示回答順に表示良回答のみ表示

回答

良回答20pt

回答者:nattocurry Selection.Name = "card" & CStr(P)

これができるなら、

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

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

Selection.Formula = "=formula!B" & CStr(P + 5)
にしてみましょう。
種類:アドバイス
どんな人:経験者
自信:参考意見
回答日時:09/04/08 15:00
回答番号:No.2
この回答へのお礼出来ました!!!
ありがとうございます!!!
確かに、おっしゃるとおりですね、でも目から鱗でした!!!

回答

良回答10pt

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

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

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

P+5を具体的な数字にして貼り付けたいなら、"=formula・・・"
の文字列全体を計算して作らないとダメですよ。
種類:アドバイス
どんな人:経験者
自信:自信あり
回答日時:09/04/08 14:53
回答番号:No.1
この回答へのお礼御回答ありがとうございます。

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

でも、なんとなく、方針が掴めそうな気がします。複雑ですね。
アドバイスありがとうございます!!!
最新から表示回答順に表示良回答のみ表示