
4月~3月まで12カ月横に並んだ表へ指定範囲を貼り付けたい。
Sheet2の指定範囲、Range("C3:C17")をコピーしてSheet1へ貼り付けたい。
毎月貼り付ける位置が違うので、Sheet2のセルC2へ貼り付け月を入力し、Sheet1の同一月の列へ貼り付けるにはどのようにしたら良いか教えてください。
Cellsの列を変数にしてコードを書きたいのですがマクロ勉強中で下記より先に進めません。
Sheets(2). Range("C3:C16").Copy Sheets(1).Cells(4, i)

No.2ベストアンサー
- 回答日時:
No1です。
>If c < 15 Then
>この記述の解説をお願いします。
見出し部分と一致するものがなかった場合、ループを全部回って抜けてきますのでcの値は15になっています。
それを判別しています。
例えば、検索をFindメソッドで行うなら、ループで探す代わりに、
Set f = sh.Range("C3:N3").Find(.Range("C2").Value, LookAt:=xlWhole)
If Not f Is Nothing Then 処理
などとなりますが、やはり同様に、
If ~~ の部分で、対象が存在しない場合の分岐を行う必要がでてきます。
「該当列がないような入力はしない」ことを前提になさっているとは思いますが、人間には入力ミス等はつきものですので、その度にエラーが発生したり、おかしな処理をされてしまうようでは困りますよね?
それを避けるための分岐ということです。
No1のコードでは、「見つからない場合は何もしない」としてありますが、「その旨の警告を出す」等にしておいても宜しいかと思います。
If ~~ Then ~~ Else ~~
を用いることで、できますよね。
No.1
- 回答日時:
こんにちは
>4月~3月まで12カ月横に並んだ表へ~
タイトル部分が固定なら、Sheet2のC2セルの値から計算で転記位置を求めることも可能ですが、とりあえず同じ値のセルを探す方法にしてあります。
探す方法もWorksheetFunction.Match()などを使う方法も考えられますが、単純にループで照合して検索する方法にしてあります。
>Range("C3:C17")をコピーして~
C3:C17だとSheet1の合計欄を上書きしてしまうと思いますので、C3:C16としてあります。
(ご提示のコードの方は、C3:C16になっているようですし・・)
以下、ご参考までに。
Sub Sample()
Dim sh As Worksheet, c As Long
Set sh = Worksheets("Sheet1")
With Worksheets("Sheet2")
For c = 3 To 14
If sh.Cells(3, c).Value = .Range("C2").Value Then Exit For
Next c
If c < 15 Then .Range("C3:C16").Copy sh.Cells(4, c)
End With
End Sub
ありがとうございます。思い通りの結果が得られました。1箇所質問させて下さい。If c < 15 Then
この記述の解説をお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
VBA 別シートの同じ日付の欄に値を貼付け
Excel(エクセル)
-
vba 2つの条件が一致したらコピーして別シートに値のみ貼り付け
Visual Basic(VBA)
-
VBAで自動集計(特定セルコピー月ごとに値貼り付け)したい。
Visual Basic(VBA)
-
-
4
Excel VBAでオートフィルタで抽出した列データを別シートの最終行にコピーするには
Visual Basic(VBA)
-
5
マクロで貼り付け位置を可変させる方法が知りたいです。
Excel(エクセル)
-
6
エクセルのVBAで日付を検索し転機したい
Visual Basic(VBA)
-
7
Excelマクロで毎月のデータ一覧から、人ごとに転記したい
Excel(エクセル)
-
8
【VBA】2つのシートの値を比較して条件一致したら、同じ行の隣の値を別ブックへ転記したいです。 VB
Visual Basic(VBA)
-
9
マクロ自動コピペ 貼り付ける場所が変わる場合
その他(Microsoft Office)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Worksheets メソッドは失敗しま...
-
B列の最終行までA列をオート...
-
ExcelVBA修正のお願い
-
エクセルVBA intersect colu...
-
VBAのFind関数で結合セルを検索...
-
データグリッドビューの一番最...
-
rowsとcolsの意味
-
IIF関数の使い方
-
文字列の結合を空白行まで実行
-
VBAでのリスト不一致抽出について
-
Changeイベントでの複数セルの...
-
URLのリンク切れをマクロを使っ...
-
複数の列の値を結合して別の列...
-
マクロについて。S列の途中から...
-
【VBA】2つのシートの値を比較...
-
VBA 何かしら文字が入っていたら
-
VBマクロ 色の付いたセルを...
-
VBAを使って検索したセルをコピ...
-
Excelで、あるセルの値に応じて...
-
Cellsのかっこの中はどっちが行...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Cellsのかっこの中はどっちが行...
-
Worksheets メソッドは失敗しま...
-
vba 2つの条件が一致したら...
-
Excelで、あるセルの値に応じて...
-
B列の最終行までA列をオート...
-
IIF関数の使い方
-
VBAのFind関数で結合セルを検索...
-
Changeイベントでの複数セルの...
-
VBA 何かしら文字が入っていたら
-
【VBA】2つのシートの値を比較...
-
DataGridViewに空白がある場合...
-
VBAで、特定の文字より後を削除...
-
URLのリンク切れをマクロを使っ...
-
エクセル 2つの表の並べ替え
-
VBAを使って検索したセルをコピ...
-
VBAコンボボックスで選択した値...
-
VBAでのリスト不一致抽出について
-
複数csvを横に追加していくマク...
-
C# dataGridViewの値だけクリア
-
データグリッドビューの一番最...
おすすめ情報