質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

Q&A

解決済

5回答

8447閲覧

EXCELでVBAマクロを使ってコピペ→コピー元は削除したい

ko1

総合スコア23

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

0グッド

0クリップ

投稿2019/08/19 00:36

編集2019/08/19 01:20

EXCELでVBAマクロを使ってコピペ→コピー元は削除したい

お世話になります。

下記の処理を実行した後、その値だけL列にペーストする事は可能でしょうか。

そして関数が表示されているK列の数値を削除したいです。

目的としては、計算結果の部分に関数を表示させない為です。

ActiveSheet.Rangeというのでやってみましたが、上手く行かず、途方にくれておりお手数ですがご教示をお願いできないでしょうか。

よろしくお願い致します。

Sub test() With Worksheets("Sheet1") With .Range("K10", .Cells(Rows.Count, "J").End(xlUp).Offset(, 1)) .NumberFormatLocal = "#,##0_ ;[赤]-#,##0" .Formula = "=ROUNDDOWN(J10*(100*VLOOKUP(Sheet2!$I$7,'Sheet3'!$A$2:$B$" & Rows.Count & ",2,FALSE))/100,0)" End With End With MsgBox "処理が終了しました" End Sub

イメージ説明
イメージ説明
イメージ説明
イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

meg_

2019/08/19 00:55

コードが見にくいので、「コードの挿入」にて修正お願いします。
meg_

2019/08/19 00:58

イメージを掴むため、サンプルのシート画像を追加してもらえませんか?
ko1

2019/08/19 01:22

わかりにくく申し訳ありません。追加いたしました。ご教示の程よろしくお願い申し上げます。
guest

回答5

0

ベストアンサー

下記のように2行追加すればいいでしょう。(見やすいようにインデントを追加してます。)

vba

1Sub test() 2 With Worksheets("Sheet1") 3 With .Range("K10", .Cells(Rows.Count, "J").End(xlUp).Offset(, 1)) 4 .Offset(, 1).NumberFormatLocal = "#,##0_ ;[赤]-#,##0" '次の列に書式設定 5 .Formula = "=ROUNDDOWN(J10*(100*VLOOKUP(Sheet2!$I$7,'Sheet3'!$A$2:$B$" & Rows.Count & ",2,FALSE))/100,0)" 6 .Offset(, 1).Value = .Value '次の列(L列)に値をコピー 7 .ClearContents '数式削除 8 End With 9 End With 10 MsgBox "処理が終了しました" 11End Sub

計算列の数式を削除してしまうのなら、計算列はなくてもいいですね。計算列は削除して、K列を支払金額にして、K列を値で上書きすればOKです。

vba

1Sub test() 2 With Worksheets("Sheet1") 3 With .Range("K10", .Cells(Rows.Count, "J").End(xlUp).Offset(, 1)) 4 .NumberFormatLocal = "#,##0_ ;[赤]-#,##0" '書式設定 5 .Formula = "=ROUNDDOWN(J10*(100*VLOOKUP(Sheet2!$I$7,'Sheet3'!$A$2:$B$" & Rows.Count & ",2,FALSE))/100,0)" 6 .Value = .Value '値で上書き 7 End With 8 End With 9 MsgBox "処理が終了しました" 10End Sub

投稿2019/08/19 02:31

編集2019/08/19 02:54
hatena19

総合スコア33699

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ko1

2019/08/29 07:36

やりたかった事、そして思っていたけどできなかった事を実現して頂きました。感謝申し上げます。ありがとうございます!
guest

0

コピー元は削除したい

んと、他のセルを参照している計算式を消して、
値のみ残したいということですよね?

Range("A1").Formula = "=D1"
range("A1").Value = Range("A1").Value
Msgbox Range("A1").Formula

というようにしてみると、
計算式の引き出に数式を入れたあと、
値の引き出しから値を取り出して、
再度値の引き出しに値を入れると、
数式の引き出しには、最初にいれた数式が消えて、
値と同じものが確認出来ると思います。

なので、
With 該当セル範囲
.Value = .Value
End With
とやって数式を消すことが常套手段となっています。

コピーして、
同じセル範囲に値のみ貼り付けとしても、
同じ結果になります。
処理速度に差があるようなので、
気になるなら、両方試してみるのも悪くないです。
(情報量により速度の有利不利があるようです。)

投稿2019/08/23 00:19

mattuwan

総合スコア2136

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

コピー&ペースト機能に拘らなければ、こういう方法もあります。

diff

1Sub test() 2With Worksheets("Sheet1") 3With .Range("K10", .Cells(Rows.Count, "J").End(xlUp).Offset(, 1)) 4- .NumberFormatLocal = "#,##0_ ;[赤]-#,##0" 5.Formula = "=ROUNDDOWN(J10*(100*VLOOKUP(Sheet2!$I$7,'Sheet3'!$A$2:$B$" & Rows.Count & ",2,FALSE))/100,0)" 6+ .Offset(, 1).Value = .Value 7+ .Offset(, 1).NumberFormatLocal = "#,##0_ ;[赤]-#,##0" 8+ .Value = "" 9End With 10End With 11MsgBox "処理が終了しました" 12End Sub

投稿2019/08/19 02:32

guissy-k

総合スコア245

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

K列の対象範囲をコピー、L列へ値の貼り付けで良いと思います。その後、K列の対象範囲をクリアします。(具体的なコードは、マクロの記録で実際に生成されたコードを参考にすると良いですよ)

投稿2019/08/19 02:22

meg_

総合スコア10579

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

コピーしたいデータの初期位置から
末端までデータをコピーして
Cells(, ).End(xlUp).Row 構文はググって下さい
削除したいデータのK列の末端まで空白を埋めるだけでは?

投稿2019/08/19 01:02

nanami12

総合スコア1015

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問