こんにちは、エクセル2010を使っています。
画像のB2~F2のようにデータがあるとします。
これをコピーして、B10に貼りつけたいのですが、10行目には既に何か入力されている可能性があります。
それを判別して、空白でない場合11行目に貼りつけるようなマクロはどのようなものになるでしょうか?
既にボタンクリックのコピペは作成済みなので、これに追加して機能すれば助かります。
Range("B2:F2").Copy Range("B10") ' 1行目 コピー & ペースト
空白ならそのまま貼り付け、空白でない場合1行下げて貼りつけと言う事です。
詳しい方、よろしくお願いいたします。
No.9ベストアンサー
- 回答日時:
No.8 の補足(以下のように書いておけばよかったですね)
Const 開始列 As String = "D" 'どこの列からコピーするか?列名を指定して下さい。
Const 終了列 As String = "AB" 'どこの列までコピーするか?列名を指定して下さい。
Const 始行 As Long = 135 'どこから空欄を探すか?行番号を指定して下さい。
Const 終 As Long = 0 'どこまで空欄を探すか?行番号を指定して下さい。最終行までの時は「0」にして下さい
ラックさん こんばんは。
おかげさまで無事目的を果たせました。
いつも助かっております^^
色々教えて頂き、ありがとうございます。
No.7
- 回答日時:
No.6 の修正です(最後まで「いいえ」をした場合に元の行に戻るようにしました)
Sub Sample()
Const 開始列 As String = "D" 'どこの列からコピーするか指定して下さい。
Const 終了列 As String = "AB" 'どこの列までコピーするか指定して下さい。
Const 始行 As Long = 135 'どこから空欄を探すか指定して下さい。
Const 終 As Long = 0 'どこまで空欄を探すか指定して下さい。最終行までの時は「0」にして下さい
Dim 終行 As Long
Dim 行 As Long
Dim 元 As String
If 終 = 0 Then
終行 = Rows.Count
Else
終行 = 終
End If
元 = 開始列 & Selection.Row & ":" & 終了列 & Selection.Row
For 行 = 始行 To 終行
If Cells(行, Range(終了列 & 行).Column + 1).End(xlToLeft).Column < Range(開始列 & 行).Column Then
Range(開始列 & 行 & ":" & 終了列 & 行).Select
Select Case MsgBox("ここにコピーしても良いですか?", vbYesNoCancel)
Case vbYes
Range(元).Copy
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats
Exit For
Case vbCancel
Exit For
End Select
End If
Next
Range(元).Select
End Sub
こんにちは、なんども回答をいただき、ありがとうございます。
色々考えて頂いたようで大変ありがたく思います。
教えて頂いたマクロをちょっと挑戦してみたいと思います。
ありがとうございます。
No.6
- 回答日時:
以下のような物はいかがでしょうか?
①「Const ~」の部分を実際の物に合わせて下さい。(初回だけ)
② コピー元の適当なセルを選択する。同じ行ならコピーしない場所でもOKです。
③ このマクロを実行します。
④「ここにコピーしても良いですか?」への回答により以下のように動作します。
・「はい」の場合:コピー(値貼り付け)して、元の場所に戻る
・「いいえ」の場合:次の空白欄が選択され、確認メッセージが再度表示される
・「キャンセル」の場合:コピーせず、元の場所に戻る
Sub Sample()
Const 開始列 As String = "D" 'どこの列からコピーするか指定して下さい。
Const 終了列 As String = "AB" 'どこの列までコピーするか指定して下さい。
Const 始行 As Long = 135 'どこから空欄を探すか指定して下さい。
Const 終 As Long = 0 'どこまで空欄を探すか指定して下さい。最終行までの時は「0」にして下さい
Dim 終行 As Long
Dim 行 As Long
Dim 元 As String
If 終 = 0 Then
終行 = Rows.Count
Else
終行 = 終
End If
元 = 開始列 & Selection.Row & ":" & 終了列 & Selection.Row
For 行 = 始行 To 終行
If Cells(行, Range(終了列 & 行).Column + 1).End(xlToLeft).Column < Range(開始列 & 行).Column Then
Range(開始列 & 行 & ":" & 終了列 & 行).Select
Select Case MsgBox("ここにコピーしても良いですか?", vbYesNoCancel)
Case vbYes
Range(元).Copy
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats
Range(元).Select
Exit Sub
Case vbCancel
Range(元).Select
Exit Sub
End Select
End If
Next
End Sub
No.5
- 回答日時:
何度も申し訳ございません。
いろいろ見直してみましたら気づきました。宜しければご回答ください。① 本当はD列~AB列をコピーという事なのでこれを選択するのは大変ですよね?列は事前に設定しておいて選択されている行の登録している部分をコピペする方が良いですよね?
② 質問時の画像を見るとコピー元は数式になっています。数式のままコピーした方が良いのか?値貼り付けにした方が良いのか?どちらでしょうか?
No.4
- 回答日時:
大変申し訳ございません。
誤解を与えてしまったみたいですね。マクロの作り方を説明したのではなく、動作としてこんな感じで良いのか?を確認したのです。
いかがでしょうか?
No.3
- 回答日時:
それでしたら以下のような考え方が良いと思いますがいかがでしょうか?
コピー元を選択状態にしてマクロを実行すると
・ 列は変えずに下に空欄を探していき空いている所にコピペする。
・「ここに張付けでよろしいですか?」の確認をする
・ [はい]の場合はそのまま終了、[いいえ]の場合はクリアして終了
・ 終了してもクリップボードには残っているので、近くに張付けたい場所が有れば手動で貼り付けできます。
という事で良いのかと思います。
ところでコピー元はクリアする必要はないのでしょうか?
こんばんは、再回答いただきありがとうございます。
コピー参照元はクリアする必要はないです、貼り付け先のみクリアします。
その1行でグラフを作っていますので固定の2行の中に貼りつけする必要があるのでこういった形になりました。
マクロの記録でもこういった分岐の入ったマクロを作る事も出来るのですね。
教えてくださった方法を試してみたいと思います、ありがとうございます。
No.2
- 回答日時:
確認させてください。
空白の判定ですが次のどれですか?
① B列だけ判定すればよい
② B列~F列まで全て確認が必要
③ その他(具体的に説明して下さい)
どの行まで延長しても良いのでしょうか?
④ 11行目のみ
⑤ 最大行まで
⑥ その他(具体的に説明して下さい)
こんにちは、回答ありがとうございます。
貼りつけ位置の空白判定ですが、B列のみでOKです。
延長位置は、一度行を下げたら次の行にはデータがある可能性は無い形です。
(簡単であれば行を下げる回数が指定出来れば嬉しいです)
ちなみに実際のコピー元のセル範囲は
D66~AB66 1行目
D67~AB67 2行目
.
D73~AB73 8行目
貼り付け先はD135~AB136
それで、この中の2行を選んで貼りつける形なので、1行目ボタンクリックで貼り付け、4行目ボタンクリックで貼り付けみたいな事をやりたいのです。
今回は上記が機能すればそれでOKなのですが、以降、列が増えたり、行が変わったりする可能性も否めないなぁ、と思いまして自分でもコピー元を簡単に変更できる、今回の質問のコードにさせて頂きました。
よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) VBA 特定の列に入っているテキストをコピペ 2 2023/06/14 11:24
- Visual Basic(VBA) VBAを使いシート間で貼り付け 3 2023/03/14 20:53
- Excel(エクセル) エクセルのマクロについて教えてください。 3 2023/02/07 14:47
- Access(アクセス) Accessのクエリの結果を、既存のエクセルに追加したい 2 2022/07/31 22:44
- Visual Basic(VBA) マクロで最終行を取得してコピーしたい 3 2022/04/06 19:07
- Visual Basic(VBA) エクセルVBAで『A列』に新規で数値を入力し『B列』から右方向の空白セルにその値を貼り付ける方法 4 2022/11/05 08:37
- Visual Basic(VBA) VBAマクロ 決まっていない行を選択して別シートへ貼付け 4 2023/02/16 16:08
- Excel(エクセル) エクセルのマクロでコピー後の貼り付け先を毎回指定したところにしたい 5 2022/08/12 10:47
- Visual Basic(VBA) vbaエクセルマクロ RemoveDuplicatesについて RemoveDuplicatesを使 3 2023/02/28 01:13
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/07/04 17:58
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
VBA 空白行に転記する
Visual Basic(VBA)
-
EXCEL VBA マクロ 別シートの空白行へのコピー
その他(Microsoft Office)
-
エクセルの空白セルへコピーするマクロをくむ方法
Excel(エクセル)
-
-
4
空白行を無視してコピーするマクロについて
Excel(エクセル)
-
5
VBA Cのセルが空白でなかったら、Aのセルに順番に数値を入力
Visual Basic(VBA)
-
6
エクセルで空白のセルを探して貼り付け
Excel(エクセル)
-
7
VBAで繰り返しコピーしながら下へ移動させる方法
Excel(エクセル)
-
8
マクロで空白セルを詰めて別シートに転記
Visual Basic(VBA)
-
9
ExcelVBAを使って、値がある場合は作業を繰り返し実行するプログラムを作成したい。
Visual Basic(VBA)
-
10
excel2010 空白セルにのみ貼り付けたい
Excel(エクセル)
-
11
数式による空白を無視して最終行を取得するマクロ
Excel(エクセル)
-
12
Excel VBA、 別ブックの最終行セルへのコピー&値ペースト
Visual Basic(VBA)
-
13
マクロで貼り付け位置を可変させる方法が知りたいです。
Excel(エクセル)
-
14
VBA:セルの空白を検索
Excel(エクセル)
-
15
EXCEL VBA 指定したファイルが存在しない場合メッセージボックスを表示させる
Access(アクセス)
-
16
【VBA】特定列に文字が入っていたらそのセル行をコピーしてマスターブックの同じ行に貼り付けたい
その他(Microsoft Office)
-
17
【EXCEL】【VBA】空欄は飛ばして処理する方法を教えて下さい。
Excel(エクセル)
-
18
エクセルVBAでコピーして順番に張り付けをしたい!
Visual Basic(VBA)
-
19
Excel VBAで同じフォルダ内のファイルを開くには?
Excel(エクセル)
-
20
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
シート保護の状態で行の追加を...
-
エクセルで行挿入した際、自動...
-
【マクロ】IF複数条件の上限に...
-
エクセル マクロ 貼り付け先が...
-
一行おきにコピーするマクロが...
-
エクセルで表示された値だけ行...
-
EXCELにて複数列を同条件(色)...
-
エクセルで反転コピー
-
エクセルVBA 複数列をコピーす...
-
エクセルで空白以外のセルの値...
-
エクセルの関数について(日付で...
-
エクセルのマクロ、AVERAGEIFを...
-
Excelの非表示列も含めてコピー
-
エクセル 列を削除したら絶対値...
-
エクセルの複数のセルを一括で...
-
複数の文字列のいずれかが含ま...
-
EXCELで○ヶ月を○年○ヶ月に変換...
-
参照先セルに値が入っていない...
-
excelでSUBTOTAL関数を設定した...
-
A1セルに入力したら、入力時間...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
EXCELにて複数列を同条件(色)...
-
一行おきにコピーするマクロが...
-
【マクロ】セルに関数を入れる...
-
Excelの非表示列も含めてコピー
-
シート保護の状態で行の追加を...
-
エクセルの関数について(日付で...
-
エクセルで表示された値だけ行...
-
エクセルで空白以外のセルの値...
-
エクセルで行挿入した際、自動...
-
エクセル VBA 指定の範囲内をコ...
-
エクセル マクロ 貼り付け先が...
-
特定の桁数を抽出
-
Excel VBAで日にちを入力して線...
-
[Excel VBA]空白セル以外に連番...
-
エクセルVBA 複数列をコピーす...
-
最終行から上10行をコピーする...
-
エクセルで反転コピー
-
エクセルのマクロ、AVERAGEIFを...
-
【マクロ】IF複数条件の上限に...
-
同一列内の複数条件 カウント
おすすめ情報
こんばんは、試してみたのですが、コピー元を選択してマクロを実行してみたのですが、普通通りそのままコピペされてしまい、ここに貼り付けでよろしいですか? と言う風な状態にならないのですが何故でしょうか?
お手数ですが教えて頂けませんか?
よろしくお願いします。
こんにちは お世話になっております。
試してみたのですが、思う結果にならないみたいで、どこが悪いのか教えて頂けませんでしょうか。
改変したのは
Const 開始列 As String = "D66" 'どこの列からコピーするか指定して下さい。
Const 終了列 As String = "AB66" 'どこの列までコピーするか指定して下さい。
Const 始行 As Long = 90 'どこから空欄を探すか指定して下さい。
Const 終 As Long = 91 'どこまで空欄を探すか指定して下さい。最終行までの時は「0」にして下さい
変更したのはこの部分のみで、確認のボックスが開くのですが、実際に貼り付けの確認位置は 6690行になっており、更にはいを選択すると、666770行にコピー元? が点線で囲われてコピーした後のようなかんじんなってしまいます。
これはどこがいけなかったのでしょうか?
実際は、上記コード以外の部分も変更するのでしょうか?
お手数ですが教えて頂けませんでしょうか。
よろしくお願いいたします。
何度も回答をいただき、ありがとうございます。
なるほど、そういう事だったのですねお手数をお掛けしました。
任意の行をコピーするためには、同じくマクロで行を選択してあげれば1つの動作で任意の行をコピー&ペーストできるのですね。
おかげさまでやりたい事が実現出来そうです、何度も教えて頂き感謝します。
ありがとうございました。