VBAの勉強をしております。
初心者なので、なんでこんなの分からんの!と言わず、教えていただけたらと思います。
シート1のA2からD2まで入力したものを、コピーしてA4からD4に貼り付けるという式は、下記でいけると思いますが、
シートをまたいだ時はどうなるのでしょうか。
例えば、A2からD2まで入力したものを、シート2のA4からD4に貼り付ける場合は、どうなるのでしょうか。
また、シート1のA2:D2までの入力を何度か繰り返した場合、シート2への貼り付けが、A5:D5、A6:D6、A7:D7とどんどん下に溜まっていく式を教えてください。
Range("A2:D2").Copy Destination:=Range("A4:D4")
No.1ベストアンサー
- 回答日時:
シートをまたいだコピーの場合は、標準モジュールの中にかきます。
それぞれのシートごとのVBAではできません。標準モジュール内に
sheets("sheet1").select 'でシートを指定
Range("A2:D2").Select '入力場所の指定
Selection.Copy 'コピー
Sheets("Sheet2").Select 'でシートの切り替え
Range("A2:D2").Select '書込場所の指定
ActiveSheet.Paste '貼り付け
sheets("sheet1").select 'で元のシートを指定
で別シートへの貼り付けができます。
ここで、貼り付け場所を順に変えてやれば下に積み重なっていくようにできます。
貼り付け場所を変える方法は、whileでも使いましょう。
j=1
while cells(j,1)<>""
j=j+1
wend
これで1行目からA列のチェックをし空欄になるまでj=j+1を繰り返します。A列j行目までいってそこが空欄ならWhileを終了しますので変数jに行番号が入っています。
Range("A2:D2").Select の替わりに
Range("A" & j & ":D" & j).Select と入れてやれば空欄になった行に書き込みます。
この回答への補足
ありがとうございます!
なるほど、標準モジュールの中に書き込めばいいんですね。
うーん、書き込んだはいいんですが、それを実行するにはどうしたらいいんでしょうか。
そ・そ・そんなことまで、教えなければならんのか!
と言うお気持ちは重々承知しております。
ホントにすいません。まだまだわたくし、ヒヨッ子なので許してください。
No.4
- 回答日時:
>標準モジュールの中に書き込めばいいんですね。
別に、シートモジュールに書き込んでもよいのですが、一般的な目的の場合は、Excel VBAでは、標準モジュールに書き込むのが標準的な書き方です。ただ、このレベルでは、あまり違いがありません。
Range("A2:D2").Copy Sheet2.Range("A4:D4")
は、最初のRange("A2:D2")は、アクティブ・シートだということで、コピーソースのシートが限定されません。
>A5:D5、A6:D6、A7:D7
>とどんどん下に溜まっていく式を教えてください。
'--------------------------------------
一括式
Sub test()
Dim i As Integer
'回数
i = 5
Sheet1.Range("A2:D2").Copy Sheet2.Range("A4").Resize(i)
End Sub
'--------------------------------------
'インクリメンタル式
Sub test2()
Dim i As Integer
With Sheet1
.Range("A2:D2").Copy
For i = 5 To 7 '行番号
.Paste Sheet2.Cells(i, 1)
Next i
End With
Application.CutCopyMode = True
End Sub
'--------------------------------------
似たような同じ繰り返しは、書かないのが基本です。
>そ・そ・そんなことまで、教えなければならんのか!
本当に、どうやって書くのが正しいのか、私など分かるわけではありません。ただ、VBAの基本的なルールやプログラミングとして、どう作るかを考えて、毎日、勉強していくしかありませんね。でも、今回のようなレベルこそ、本当は難しいのかもしれません。これで良いのかは分かりません。
No.3
- 回答日時:
標準モジュール内のsubの実行は、マクロ実行ボタンでできます。
ツールバーのVisualBasicの所にあります。または、シート上にボタンを作ってそれをクリックしたときのVBAにsub名をかくことで実行できます。
プログラムの性質上後者の方がいいかと思います。
No.2
- 回答日時:
難しく考えすぎです。
[Sheet1]の特定のセルのデータを[Sheet2]の特定のセルにコピーするのであれば、下記のコードで十分です。
>>Sheet1に記入した場合
Sheet2.Range("A4:D4").Value = Range("A2:D2").Value
>>標準モジュールに記入した場合
Sheet2.Range("A4:D4").Value = Sheet1.Range("A2:D2").Value
書式ごとコピーする場合は
>>Sheet1に記入した場合
Range("A2:D2").Copy Sheet2.Range("A4:D4")
>>標準モジュールに記入した場合
Sheet2.Range("A4:D4").Value = Sheet1.Range("A2:D2").Value
同一のデータを複数のセルにコピーするなら
Dim x As Integer
Dim szCells As String
For x = 4 To 14
szCells = "A" & x & ":D" & x
Sheet2.Range(szCells).Value = Sheet1.Range("A2:D2").Value
Next x
書式ごと複数のセルにコピーするなら
Dim x As Integer
Dim szCells As String
For x = 4 To 14
szCells = "A" & x & ":D" & x
Sheet1.Range("A2:D2").Copy Sheet2.Range(szCells)
Next x
*上記の2このコードは標準モジュールに記入した場合です。
あとは、これを参考に組み替えた見てください。
プログラムを覚えるには、考える事が重要です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 複数シート一括作成後に、特定範囲の数式は値で貼り付けしたい 3 2022/10/07 11:18
- Visual Basic(VBA) 【困っています2】VBA 追加処理の記述を教えてください。 2 2022/08/26 11:42
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 2 2022/05/26 17:19
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- Excel(エクセル) VBA セルの値と同じ名前のシートにデータを貼り付けするやり方を教えてください 2 2022/05/17 16:26
- Excel(エクセル) エクセルのマクロでコピー後の貼り付け先を毎回指定したところにしたい 5 2022/08/12 10:47
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Visual Basic(VBA) ExcelVBAでDo Until loopのネスト、IF文を使って一致する物と一致しない物としたい 11 2022/12/24 17:46
- Visual Basic(VBA) 【VBA】指定した検索条件に一致したら別シートに転記したい 2 2022/03/23 16:14
- Visual Basic(VBA) 指定文字を太字にするVBAを別シートのセルを指定する構文(改良について) 6 2022/08/27 22:11
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで別シートの同じ位置...
-
エクセルでセルの書式設定がで...
-
エクセルの下部のシートタブの...
-
シート全体を他のブックのシー...
-
【エクセル】表から条件に合っ...
-
ワークシートの行が途中から表...
-
Excelで大量の2000個のリストを...
-
ロックしたセルのコピー&貼り付け
-
EXCELでコピーしたグラフのデー...
-
excelで勝手にテキストボックス...
-
EXCELで複数シート作成後、全シ...
-
コピー&ペーストすると、VLOOK...
-
エクセルのマクロについて教え...
-
エクセルのVBAを勉強中
-
色付きセルの合計を自動更新したい
-
worksheetクラスのcopyメソッド...
-
行の挿入ができなくなった
-
エクセル2003 エクセルにつ...
-
シート保護してても並び替えを...
-
ピボットテーブルの統合
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで別シートの同じ位置...
-
エクセルの下部のシートタブの...
-
エクセルでセルの書式設定がで...
-
EXCELでコピーしたグラフのデー...
-
シート全体を他のブックのシー...
-
ワークシートの行が途中から表...
-
ロックしたセルのコピー&貼り付け
-
エクセルで数式は残したまま他...
-
Excelで保護のかかったシートの...
-
Excelで大量の2000個のリストを...
-
excelで勝手にテキストボックス...
-
VBA アクティブでないシートの...
-
行の挿入ができなくなった
-
シート保護したExcelへの画像貼...
-
【エクセル】数式のセル番地を...
-
エクセルで多数のシートをまと...
-
シート保護してても並び替えを...
-
worksheetクラスのcopyメソッド...
-
【エクセル】表から条件に合っ...
-
エクセルで打ち込んだ数字を自...
おすすめ情報