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を理解していないので、間違っているのかもしれませんが、
御教授お願い致します。
No.2ベストアンサー
- 回答日時:
Selection.Name = "card" & CStr(P)
これができるなら、
Selection.Formula = "=formula!B(P+5)"
これがどうおかしくて、どうすれば良いかも解る筈なんですけどねぇ。
Selection.Formula = "=formula!B" & CStr(P + 5)
にしてみましょう。
No.1
- 回答日時:
検証してませんが、ココまで来るレベルなら分かるでしょう。
Selection.Formula = "=formula!B(P+5)"
これじゃあ「文字列B!(P+5)」がそのまま貼り付けられます。
Pを数字に見なして()内は計算しちゃくれません。
P+5を具体的な数字にして貼り付けたいなら、"=formula・・・"
の文字列全体を計算して作らないとダメですよ。
御回答ありがとうございます。
Selection.Formula =""
で" "の中身を考えていたのですが、
どうにも分からなかったのです。
でも、なんとなく、方針が掴めそうな気がします。複雑ですね。
アドバイスありがとうございます!!!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 表示形式、文字列セル(列)に数式を入力するには マクロ 1 2022/09/18 10:53
- Visual Basic(VBA) 動きっぱなしです。止め方とプロシージャの間違いを教えて下さい! 5 2022/08/15 23:08
- Visual Basic(VBA) データのある範囲を選択するVBAについて 2 2022/09/03 00:20
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Excel(エクセル) Formulaプロパティーを使ってセルに数式を組んだのですが簡潔にしたい。 3 2022/08/21 20:51
- Visual Basic(VBA) マクロで最終行を取得してコピーしたい 3 2022/04/06 19:07
- Visual Basic(VBA) エクセルのマクロとシートの保護について教えてください。 1 2022/10/18 08:36
- Excel(エクセル) 日付で矢印マクロ 4 2023/07/25 16:47
- Excel(エクセル) マクロを簡潔にしたい 6 2022/09/16 10:37
- Excel(エクセル) EXCEL マクロで行を挿入して貼り付けようとするとエラーになる。 2 2022/05/24 09:43
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセル:マクロ「Application...
-
エクセルの2ページ目の作り方
-
エクセルのアポストロフィを一...
-
Excel 行の連続データを列に参...
-
エクセルで勝手に「折り返して...
-
EXCELシートをPowerPointにきれ...
-
EXCELのオートフィルの設定を変...
-
「選択範囲を解除してアクティ...
-
Excelに、ダブルクォーテーショ...
-
エクセル・数値が変化したらカ...
-
エクセルでの行数・列数を指定...
-
メールソフト「サンダーバード...
-
Excel)軽いデーターのはずなの...
-
エクセルオートフィルで書式を...
-
エクセル 別シートへのコピー...
-
エクセルのシートに他のシート...
-
EXELで複数のとびとびのセルを...
-
フォームのテキストボックスの...
-
Excelで値をコピーするとセルの...
-
Excelの連続データから数行おき...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセル:マクロ「Application...
-
エクセルの2ページ目の作り方
-
エクセルのアポストロフィを一...
-
Excel 行の連続データを列に参...
-
エクセルで勝手に「折り返して...
-
Excelでコピーした行の挿入を繰...
-
EXCELのオートフィルの設定を変...
-
EXCELシートをPowerPointにきれ...
-
エクセルで、選択範囲の数値全...
-
Excel)軽いデーターのはずなの...
-
メールソフト「サンダーバード...
-
エクセルでの行数・列数を指定...
-
「選択範囲を解除してアクティ...
-
Excelに、ダブルクォーテーショ...
-
エクセル 別シートへのコピー...
-
エクセルオートフィルで書式を...
-
エクセルで値だけコピーして背...
-
EXELで複数のとびとびのセルを...
-
Excelで、横並べのデータを縦並...
-
エクセル・数値が変化したらカ...
おすすめ情報