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

締切り済みの質問

エクセルVBAが書ける方へ

お世話になります。
下記VBAはB19からB28までのデータをA11:12の横列に貼り付けさせる内容です。

Sub 特価()

'

' 特価 Macro

'



'

Range("A11:A12").Select

ActiveCell.FormulaR1C1 = "=R[8]C[1]"

Range("B11:B12").Select

ActiveCell.FormulaR1C1 = "=R[9]C"

Range("C11:C12").Select

ActiveCell.FormulaR1C1 = "=R[10]C[-1]"

Range("F11:F12").Select

ActiveCell.FormulaR1C1 = "=R[11]C[-4]"

Range("H11:I12").Select

ActiveCell.FormulaR1C1 = "=R[12]C[-6]"

Range("T11:U12").Select

ActiveCell.FormulaR1C1 = "=R[13]C[-18]"

Range("X11:Y12").Select

ActiveCell.FormulaR1C1 = "=R[14]C[-22]"

Range("AD11:AE12").Select

ActiveCell.FormulaR1C1 = "=R[15]C[-28]"

Range("AN11:AO12").Select

ActiveCell.FormulaR1C1 = "=R[16]C[-38]"

Range("AW11").Select

ActiveCell.FormulaR1C1 = "=R[17]C[-47]"

Range("B23").Select

End Sub

これに下記内容を追加したいのですが教えて下さい。

・B19からB28のデータは入力後消す。
・貼り付けたら次に入力する時は下の行(A13:14)に貼り付ける。
・同様にデータを消してA15:16に貼り付ける。以下、下の行に貼り付けていくようにする。
・貼り付けたらカーソルはB19を選択した状態にする。

言葉足らずでしたら補足します。
何卒宜しくお願い致します。

投稿日時 - 2014-07-16 18:43:21

QNo.8680839

すぐに回答ほしいです

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

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

回答(4)

書き忘れがありました。
Range("B19:B28").clear
これをcells(19,2).selectの上に追加して下さい。
Rangeはcellsと同様にセルを表しますが、位置の指定方法が違います。

Macro1を動作する時、上記サブプロシージャのどこかにカーソルを置き、F8を押す度に一行ずつ実行してくれます。

投稿日時 - 2014-07-18 21:15:59

AN2です。すみません。自動マクロではできませんね。次回の記入開始位置を指定出来ません。

sub Macro1()
Dim i As Long, j As Long

i=cells(19,1)
j=cells(20,1)

cells(i,j)=cells(19,2)
cells(i+1,j)=cells(20,2)

'cells(19,2)~cells(28,2)までをどこに書き出すか、望みの場所に記入する
'cellsの使い方は
'cells(行番号, 列番号)なので例えばA11はcells(11,1)になります。

~=cells(28,2)

'次回起動時の記入開始位置を指定
cells(19,1)=i+2
cells(20,1)=j

'B19を選択
cells(19,2).select

End Sub

使い方
(1)初めにセル(19,1)と(20,1)つまりA19とA20に11と1(つまりA11)を記入してください。これが次回の記入開始位置になります。
(2)B19~B28に望みのデータを書きMacro1を起動
(3)B19~B28のデータを記入開始位置から書き出し、次回の記入開始位置が書き換わりマクロ終了
記入開始位置を変えれば望みの位置から開始できます。


動作テストしてません。間違ってたらごめんなさい。

投稿日時 - 2014-07-18 20:20:00

自動マクロで書けると思います。
試してみては?

投稿日時 - 2014-07-18 19:32:35

ANo.1

なかなか解答が来ませんね。何をすればいいかほとんど分かりません。


>特価というマクロの先頭部分が空白ですが、ここで何か行っているわけですか?

>A11:12の横列に貼り付けさせる内容です。
提示されたコードを見ても、12行目には何も入力されていませんが、質問のために削除されているんですか?
また、提示されたコードは算式を貼り付けていますが、これでいいですか?

>Range("AN11:AO12").Select
このような行がたくさんありますが、意味がありますか?マクロを記録したからでしょうか。

>これに下記内容を追加したいのですが
特価というマクロに追加するのでしょうか、13行目以降を入力をして横に貼り付けるマクロを新たに作るのでしょうか。特価というマクロに追加するのは大変です。(入力があるため)

>B19からB28のデータは入力後消す。
提示のマクロでは算式が編集されているのでデータを消去するとすべて「0」になってしまうように見えます。本当に消しますか?

>貼り付けたら次に入力する時は下の行(A13:14)に貼り付ける。
12行目にデータを貼り付けた形式がありませんが13、14行目でいいですか?

>同様にデータを消してA15:16に貼り付ける。以下、下の行に貼り付けていくようにする。
A15,16の次はA17,18で、次のA19,20は入力する「B19からB28」にぶつかってしまいそうです。貼り付ける回数は最大4回ですか?

>貼り付けたらカーソルはB19を選択した状態にする。
これも貼り付けた行とぶつかりそうです。

>B19からB28のデータ
何も表題がないB19からB28にデータを入力するのは難しくないですが?(間違うとか) 横のA列に何を入力するか記載があった方がよくないですか?


コードを見ただけですが、このくらい疑問があります。以上がはっきりすれば、解決は難しくないと思います。

投稿日時 - 2014-07-17 15:05:37

あなたにオススメの質問