シート1のC列の最終行を取得して
その行を丸々値貼り付けするマクロを作りたいと思います。
シート3のB18の値をシート1のC列の最終行の1つ下のセルに値貼り付け
すると、その行のA、B列に日付が入力される関数が入っています。(下まで)
関数が入ったままだと、うまくいかない時があるので最終行をコピーして値貼り付けしたいのですが、マクロの作り方を教えてください。
シート1の最終行に貼り付け
Sheets("Sheet3").Select
Range("B18").Select
Selection.Copy
Sheets("Sheet1").Select
Range("C65536").End(xlUp).Offset(1).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
End Sub
最終行をコピーして値貼り付け
Dim 最終行 As Integer
最終行 = Range("C65536").End(xlUp).Row
Range("A6:C" & 最終行).Select
Selection.Copy
Sheets("Sheet1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
End Sub
このマクロだと、A6からC列の最終行まで全てコピーされてしまうので、C列の最終行のAからC列まで1行だけコピーできないでしょうか?
A 回答 (7件)
- 最新から表示
- 回答順に表示
No.6
- 回答日時:
試してみたのですが、ちゃんと動きますね。
(Excel2007)まさか2行に分けて記述しているとか。
「動かない」はエラーになる、結果が変わらないどっち?
この回答への補足
エラーは出ませんが、Sheet3のB18の値がSheet1の最終行に反映されません。Excel2003です。
Sub Macro2()
Worksheets("Sheet1").Cells(65536, 3).End(xlUp).Offset(1).Value = Worksheets("Sheet3").Cells(18, 3).Value
End Sub
No.5
- 回答日時:
私は2つの代入を書いているのですが、どちらが動かないのですか?
どちらにも間違いはありません。
まさか
Dim 最終行 As Integer
が記入漏れになっていること?
この回答への補足
お手数おかけします。
Worksheets("Sheet1").Cells(65536, 3).End(xlUp).Offset(1).value = Worksheets("Sheet3").Cells(18, 3).value
この一行の他に何か入力するのでしょうか?
ボタンを押しても動きません。
最後に書いて頂いた代入は、動きます。
No.4
- 回答日時:
>Range("A6:C" & 最終行).Select
を
Application.Intersect(Rows(最終行), Columns("A:C")).Select
では?
最終行とA:C列の重なっている部分=最終行のA:C列
No.3
- 回答日時:
あなたのコードは
Range("A6:C" & 最終行).Select
を
Range("A" & 最終行 & ":C" & 最終行).Select
と変えればたぶん意図通りの動作になると思います。
しかしVBAではこういう場合はコピー&ペーストではなく「代入」として考えましょう。
あなたのコードでは
代入元のセルをselect
selection.copy
代入先のセルをselect
selection.copy オプションはなんたら感たら
Application.CutCopyMode = False
という記述が
代入先のセル=代入元のセル
という一行になります
"シート1の最終行に貼り付け"
Sheets("Sheet3").Select
Range("B18").Select
Selection.Copy
Sheets("Sheet1").Select
Range("C65536").End(xlUp).Offset(1).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
は
Worksheets("Sheet1").Cells(65536, 3).End(xlUp).Offset(1).value = Worksheets("Sheet3").Cells(18, 3).value
の一行になります。(.valueは省略可)
最終行をコピーして値貼り付け
Dim 最終行 As Integer
最終行 = Range("C65536").End(xlUp).Row
Range("A6:C" & 最終行).Select
Selection.Copy
Sheets("Sheet1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
質問の内容は「C列の最終行のA列,B列」に式が入っているけどそれを値に変えたいと解釈しました。
これも代入で処理します。
最終行A列の値=最終行A列の値
最終行B列の値=最終行B列の値
これは「代入」ですから右辺の「計算結果(あなたの言う日付計算の結果の値)」を左辺に代入する。(A=A+1と同じ解釈です)
以下の3行になります。
最終行 = Range("C65536").End(xlUp).Row
cells(最終行,1).value=cells(最終行,1).value
cells(最終行,2).value=cells(最終行,2).value
.(.valueは省略可)
回答頂きありがとうございます。
今回初めてネットで検索しながらマクロを作った次第で、代入のやり方はよくわかりませんでした。
そのまま貼ればいいのでしょうか。動かないです。
最初に書いて頂いたものに変更することで、
関数式が残らず値のみ貼り付ける事が出来ました。
ありがとうございました。
No.2
- 回答日時:
ここまで判っておれば、簡単な事ではないの。
ただ質問文章がごたごたして意味が良く取れない。
ーーー
コピー先は
シート1のC列の最終行の直下行。
その行のA列以右列は空白セルですね。
>その行のA、B列に日付が入力される関数が入っています。
ということはC列セルだけ空白セルなのか?普通珍しい。
>その行のA、B列に日付が入力される関数が入っています、とは?
値貼り付けするのですね。コード例は質問に載っているよね。
ーーー
コピー元は
>シート3のB18の値を・・で1セルですか?シート3に間違いない?
>C列の最終行のAからC列まで1行だけコピーできないでしょうか?
との関連は?
===
コピー元とコピー先を明確に説明してください。
===
全体的に不明だが、コードで言えば
Range("A" & 最終行 & ":C" & 最終行).・・
または
Range("A" & 最終行+1 & ":C" & 最終行+1).・・
の書き方が参考になるかな。
ーー
>最終行 = Range("C65536").End(xlUp).Row
Range("A6:C" & 最終行).Select
Selection.Copy
Sheets("Sheet1").Select
Selection.PasteSpecial Paste
は同じセルに値貼り付けして、式を消すのかな?それまでのニュアンスと違うようだが。
No.1
- 回答日時:
>Sheets("Sheet3").Select
>Range("B18").Select
>Selection.Copy
>Sheets("Sheet1").Select
>Range("C65536").End(xlUp).Offset(1).Select
>Selection.PasteSpecial Paste:=xlPasteValues, >Operation:=xlNone, SkipBlanks _
>:=False, Transpose:=False
>Application.CutCopyMode = False
With Sheets("Sheet1").Cells(Rows.Count, "C").End(xlUp).Offset(1)
.Value = Sheets("Sheet3").Range("B18").Value
End With
>最終行 = Range("C65536").End(xlUp).Row
>Range("A6:C" & 最終行).Select
Cells(最終行, "A").Resize(, 3).Select
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルのマクロでコピー後の貼り付け先を毎回指定したところにしたい 5 2022/08/12 10:47
- Excel(エクセル) エクセル VBAでシートのコピーを作りたい 1 2023/05/18 07:42
- Visual Basic(VBA) マクロで最終行を取得してコピーしたい 3 2022/04/06 19:07
- Visual Basic(VBA) 貼り付けた値が消えていく 以下はソースファイルの2番目のシートのB6から最終行を取得 ターゲットファ 2 2023/07/27 12:23
- Visual Basic(VBA) マクロを短くする 1 2023/01/15 00:11
- Excel(エクセル) マクロで最終行から上に検索を逆にしたい 1 2022/05/17 18:27
- Visual Basic(VBA) 複数csvを横に追加していくマクロについて 2 2023/04/25 09:19
- Visual Basic(VBA) まとめシートから集計シートへA列のコードが一致したら1行コピーするマクロをネット上で見つけました。こ 1 2022/08/30 14:11
- Visual Basic(VBA) 動きっぱなしです。止め方とプロシージャの間違いを教えて下さい! 5 2022/08/15 23:08
- Visual Basic(VBA) 集計シートA列のコードと一致する右に並んだシート名(コード)の3行目から10行目をコピーして貼り付け 4 2022/08/18 15:24
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Worksheets メソッドは失敗しま...
-
vba 2つの条件が一致したら...
-
Cellsのかっこの中はどっちが行...
-
【VBA】2つのシートの値を比較...
-
データグリッドビューの一番最...
-
Excelで、あるセルの値に応じて...
-
マクロ 最終列をコピーして最終...
-
DataGridViewに空白がある場合...
-
VBAで、特定の文字より後を削除...
-
rowsとcolsの意味
-
B列の最終行までA列をオート...
-
VBAを使って検索したセルをコピ...
-
VBAで、離れた複数の列に対して...
-
マクロ 関数を使った抽出でエラ...
-
IIF関数の使い方
-
VBAで重複データを確認したい
-
Changeイベントでの複数セルの...
-
VBAのFind関数で結合セルを検索...
-
エクセル アクティブセルから...
-
文字列の結合を空白行まで実行
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Worksheets メソッドは失敗しま...
-
Excelで、あるセルの値に応じて...
-
B列の最終行までA列をオート...
-
vba 2つの条件が一致したら...
-
Cellsのかっこの中はどっちが行...
-
VBAを使って検索したセルをコピ...
-
VBAのFind関数で結合セルを検索...
-
文字列の結合を空白行まで実行
-
IIF関数の使い方
-
【VBA】2つのシートの値を比較...
-
マクロ 最終列をコピーして最終...
-
Changeイベントでの複数セルの...
-
VBA 何かしら文字が入っていたら
-
URLのリンク切れをマクロを使っ...
-
エクセルVBAにて =A1=B1とすれ...
-
VBAでのリスト不一致抽出について
-
データグリッドビューの一番最...
-
マクロについて。S列の途中から...
-
VBA UserFormからの転記で
-
targetをA列のセルに限定するに...
おすすめ情報