- ベストアンサー
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を理解していないので、間違っているのかもしれませんが、 御教授お願い致します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
Selection.Name = "card" & CStr(P) これができるなら、 Selection.Formula = "=formula!B(P+5)" これがどうおかしくて、どうすれば良いかも解る筈なんですけどねぇ。 Selection.Formula = "=formula!B" & CStr(P + 5) にしてみましょう。
その他の回答 (1)
- FEX2053
- ベストアンサー率37% (7991/21371)
検証してませんが、ココまで来るレベルなら分かるでしょう。 Selection.Formula = "=formula!B(P+5)" これじゃあ「文字列B!(P+5)」がそのまま貼り付けられます。 Pを数字に見なして()内は計算しちゃくれません。 P+5を具体的な数字にして貼り付けたいなら、"=formula・・・" の文字列全体を計算して作らないとダメですよ。
お礼
御回答ありがとうございます。 Selection.Formula ="" で" "の中身を考えていたのですが、 どうにも分からなかったのです。 でも、なんとなく、方針が掴めそうな気がします。複雑ですね。 アドバイスありがとうございます!!!
お礼
出来ました!!! ありがとうございます!!! 確かに、おっしゃるとおりですね、でも目から鱗でした!!!