

値のみを移動したいのですが、切り取りにして貼り付けると切り取った部分の書式が消える上に、貼り付けた部分に数式も入ってしまいます。
なのでコピーして形式を選択して貼付け、値にしているのですが、そうするとコピー元の値は残ってしまいます。
なのでコピー後コピー元の値をDELキーで消しているのですが、いちいちコピーした部分に戻って範囲指定して消すというのは面倒です。
値だけが移動できるという機能があればいいのですが、そういった機能はエクセルにあるのでしょうか?
マクロでそういったことができないものかといろいろ試したりしてみたのですがうまくいきません。
バージョンは2000です。
ご存知の方いたらよろしくお願いします。
No.10ベストアンサー
- 回答日時:
#8です。
>コピー元と貼り付け先が重なってしまった場合、貼り付け先のデーターまでが消えてしまうんです。
確かにそうなってしまいますね、改良しました。
#6の改良版
Sub test()
Dim mr As Range, c As Range
If Selection.Areas.Count = 2 Then
Set mr = Selection.Areas(1)
mr.Copy
Selection.Areas(2).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
With Selection
For Each c In mr
If c.Row < .Row Or c.Row >= .Row + .Rows.Count Then
c.Value = ""
ElseIf c.Column < .Column Or c.Column >= .Column + .Columns.Count Then
c.Value = ""
End If
Next
End With
Else
Beep
End If
End Sub
#8のコードAの改良版
Public r As Range
Sub test2()
Dim c As Range
If Application.CutCopyMode = xlCopy And TypeName(Selection) = "Range" Then
ActiveCell.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
With Selection
For Each c In r
If c.Row < .Row Or c.Row >= .Row + .Rows.Count Then
c.Value = ""
ElseIf c.Column < .Column Or c.Column >= .Column + .Columns.Count Then
c.Value = ""
End If
Next
End With
Set r = Selection
Else
Beep
End If
End Sub
なお、Public r As Range の部分は、必ずモジュールのウィンドウ中の一番上にコピーしてください。
No.12
- 回答日時:
#11です。
#8の再改良版です、#8では二つのプロシージャが必要でしたが、一つで済むようになりました。
標準モジュールにコピーしてください。
使い方:コピー元を選択後エクセルの”切り取り”ボタンをクリック、コピー先を選択後マクロを登録したボタンをクリック。
Sub test2()
If Application.CutCopyMode = xlCut And TypeName(Selection) = "Range" Then
Cells(Selection.Row, Selection.Column).Select
ActiveSheet.Paste
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Else
Beep
End If
End Sub
Sub test() も Sub test2()も、エクセルの”切り取り”、”貼り付け”をした後、”コピー”し”形式を選択して貼り付け”で”値”を選んで貼り付ける作業を自動化したものです。
したがって、コピー元とコピー先のセル範囲中に互いを参照する計算式があると、コピー後の内容が変わってしまうのでご注意ください。
No.11
- 回答日時:
#10です。
別のやり方を思いつきました。時間が無いので、とりあえずひとつだけ。
#6の再改良版
Sub test()
If Selection.Areas.Count = 2 Then
Selection.Areas(1).Cut
Cells(Selection.Areas(2).Row, Selection.Areas(2).Column).Select
ActiveSheet.Paste
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Else
Beep
End If
End Sub
No.9
- 回答日時:
#4の補足について
(1)
>ここの部分に下の回答にあった
Public st
・・・・
End Sub
この部分をコピーして貼り付けたり、
----
Public stと Public s は
Private Sub CommandButton1_Click()
Endの外へ置いてください。Public変数で調べて見てください。
(2)注意事項
またデザインモーを解除しないとコマンドボタンをクリックしても、プロシージュアが反応しません(働きません)。慣れない人は、これが原因の場合が多い。
VBE画面で実行をクリックして、デザインモードをクリックしてアイコンの凹みをなくしてください。
この回答への補足
ご指摘の通り、Public stと Public s を Private Sub CommandButton1_Click() Endの外、わからないので適当に先頭の部分に置いてみました(Public変数はちょっとわからないです)。
そしてデザインモードを終了してからやってみるとできるようになりました。
ただできるのは1つのセルのデータのだけのようですね。
範囲指定してうつすので1つのセルだけではちょっとまずいです。
でもいろいろありがとうございました。
No.8
- 回答日時:
ボタンが選択されてしまうのは、デザインモードが終了していないからです。
ボタンをダブルクリックしてマクロをコピーした後、"コントロールツールボックス”バーにある"デザインモードの終了”ボタン(三角定規の絵柄)をクリックして、デザインモードを終わらせてください。そうすれば、ボタンが使えるようになります。
フォームや、ツールバーのコマンドボタンに登録する場合。
"ツール"→"マクロ”でVisual Basic Editorを起動し、"挿入"→"標準モジュール”で開いたウィンドウにコードをすべてコピーします。
マクロの登録ダイアログを開き(ボタンを描画、クリック、ダブルクリック、右クリック→マクロの登録などで開きます)、マクロを登録してください。
もうひとつ。前回のマクロではシート・ブック間のコピーが出来なかったので、別案を考えました。
コードAは、VBEの標準モジュールにコピーし、ボタン(ツールバーのコマンドボタンが便利)に登録してください。
コードBは、VBEのプロジェクトエクスプローラを開き、ThisWorkbookをダブルクリックして開いたウィンドウにコピーしてください。
使い方: コピー元セル範囲を選択した後、エクセルの”コピー”ボタンをクリック、コピー先のセルを選択し、上で作ったボタンをクリック。
'コードA--------------------------------------------
Public r As Range
Sub test2()
If Application.CutCopyMode = xlCopy Then
ActiveCell.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
r.Value = ""
Application.CutCopyMode = False
Set r = Selection
End If
End Sub
'コードB-------------------------------------------------
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
If Application.CutCopyMode = False Then
Set r = Selection
End If
End Sub
この回答への補足
詳しく説明して頂いたおかげでやり方がわかりました。
ツールバーに登録できるなど希望どおりなのですが、1つだけ問題点がありました。
コピー元を範囲指定した後、貼り付けますが、コピー元と貼り付け先が重なってしまった場合、貼り付け先のデーターまでが消えてしまうんです。
例えばB1~C4を範囲指定してコピーでA1に貼り付ける場合、普通B1~C4の値はA1~B4に貼り付けられますが、コピー元と貼付け先が重なるB1~B4も消えてしまい、B1~B4がA1~A4にコピーされるだけになってしまいます。
このへんを改善できれば最高なのですが。
もし可能でしたらよろしくお願いします。
No.7
- 回答日時:
#6です。
変な文章でした。>"ツール"→"ユーザー設定"で作るツールバーのコマンドボタンや"フォーム"ワークシート上に作るボタンに登録して試してみてください。
"ツール"→"ユーザー設定"で作るツールバーのコマンドボタンや、"フォーム"でワークシート上に作るボタンに登録して試してみてください。
あと、"コントロールツールボックス"で作るボタンに登録する場合は、Sub test() から、end Sub の間の中身だけをコピーして使ってください。
No.6
- 回答日時:
VBAでやってみました。
"ツール"→"ユーザー設定"で作るツールバーのコマンドボタンや"フォーム"ワークシート上に作るボタンに登録して試してみてください。
使い方
コピー元のセル範囲を選択した後,キーボードの[Ctrl]キーを押しながらコピー先のセル(ひとつでOK)を選択。
[Ctrl]キーから指を離した後、上で作ったボタンをクリック。
コピー先のセル範囲に既存のデータがあると、上書きされてしまうので注意してください。
Sub test()
Dim r As Range
If Selection.Areas.Count = 2 Then
Set r = Selection.Areas(1)
r.Copy
Selection.Areas(2).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
r.Value = ""
Else
Beep
End If
End Sub
この回答への補足
コントロールツールボックスからコマンドに
Private Sub CommandButton1_Click() 最初からあった
Dim r As Range )
・ ) コピー
End If )
end Sub 最初からあった
こう入れた後、表示エクセルのアイコンで戻ってやってみたんですが、作ったボタンを押してもボタンが選択されるだけでした。
フォーム→ボタン→新規作成から
Sub ボタン1_Click()
End Sub
2段目にコピーしたものを入れたり、全部消してからコピーしたものを入れたりしましたが、エラーでてしまいました。
すいません、どうもどういうふうにコピーしていいのかわからないです。
No.5
- 回答日時:
#2です。
>普通にコピーされるだけでコピー元は消えませんでした。
>どうしてだろ。
コピー直後にDeleteキーでコピー元を消すんです。
アタシは左手でマウスを使いますので、この手のツールは重宝してますが、右手でマウスを使われる方にはかえってめんどくさいかもしれませんね。
なるほど、そうでしたか。
普通に右クリックコピーの後、貼り付ける前にコピー元をDELで消すとコピーできなくなってしまいますが、この方法だと消してからでもコピーできますね。
値だけがコピーできるみたいですし、これなら貼り付けた後コピー元に戻って消すという手間が省けますね。
ありがとうございます。
No.4
- 回答日時:
>コマンドボタンというのはユーザー設定のところにあるコマンドボタンでしょうか?
エクセルのシートのメニューの余白部で、右クリックするとツールバー一覧が出て、その中に「コントロールツールボックス」があります。それをクリックして出てくるツールボックスの中の、四角いだけのアイコンがコマンドボタンです。これをクリックしボックス外のワークシート上にカーソルを持っていくと、+にかわえいますから、左マウスボタンを押しつつ、南東方向にドラッグすると、ボタンが現われます。これをWクリックすると、VBE画面になり
Private Sub CommandButton1_Click()
End Sub
が現われます。
この回答への補足
Private Sub CommandButton1_Click()
この空間
End Sub
ここの部分に下の回答にあった
Public st
・
・
End Sub
この部分をコピーして貼り付けたり、
Private Sub CommandButton1_Click()
End Sub
この部分を消してから貼り付けたりしてやってみたんですが、(3)の通りコマンドボタンを押しても何もおきませんでした。
このへんの機能は使ったことないのでやり方間違えてたかもしれません。
すいません、やはりちょっとわかりませんでした。
No.3
- 回答日時:
VBAでお遊び程度のものが出来ました。
(1)シートにコマンドボタンを貼りつけます。キャプション(テキスト)を「切り取り」とでもしてください。
(2)コードはSheet1のイベントプロシージュア部に
Public st
Public s
Private Sub CommandButton1_Click()
st = ActiveCell.Value
ActiveCell = ""
s = 1
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If s = 1 Then
Target = st
End If
s = 0
End Sub
(3)操作
(A)切り取るセルをマウスでポイントしクリックします。
(B)そしてボタンをクリック
(C)貼りつけるセルをクリック。
一セルでなく、範囲でもSelectionに置きかえれば出きるかもしれないが。
なぜお遊びに感じるか、Public変数を使っていること、エクセルのシートのイベントがもうひとつ好みでない。例えば同じセルを指すと選択が変ったとしない(当たり前のようではあるが)ため、上記も同じセルへは戻せませんという限定つきになっている。
この回答への補足
コマンドボタンというのはユーザー設定のところにあるコマンドボタンでしょうか?
すいません、ちょっとよくわかりませんでした。
マクロでできれば一番いいのですが・・
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Excel(VBA) 特定の条件に該当する行の値、書式を同じセルにコピ&ペーストしたいです 1 2022/05/21 18:18
- Excel(エクセル) エクセルで保存時に全部のシートの最終行をコピーして数値で貼り付けたい 3 2023/08/14 15:49
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/01/26 09:50
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/25 11:55
- Excel(エクセル) マクロVBA別Excelブックにデータ転記 2 2022/07/10 23:35
- 画像編集・動画編集・音楽編集 WIN10で「切り取り&スケッチ」が上手く使えません。 1 2022/09/01 22:56
- Excel(エクセル) Excel上で分からないことがあります。 他のシートからコピー→貼り付けしたのですが図のようになって 4 2023/05/29 19:16
- Excel(エクセル) エクセルのマクロについて教えてください。 3 2023/02/07 14:47
- Visual Basic(VBA) 貼り付けた値が消えていく 以下はソースファイルの2番目のシートのB6から最終行を取得 ターゲットファ 2 2023/07/27 12:23
- Excel(エクセル) エクセルのマクロ作成について教えてください 5 2023/02/20 00:39
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelで行ごとコピー、同じ行を...
-
Wordの「背景色を消す方法」教...
-
塗りつぶしの色をコピーするには
-
VBAのテキストボックスに文字列...
-
ショートカットキーを知らない...
-
googleで翻訳したテキストがコ...
-
C+vのvは英語で何の頭文字...
-
エクセルでマクロにてセル色と...
-
大学生です。moodle上でのテス...
-
OpenOfficeのCalcでコピー出来ない
-
セルに値がある行のみを抽出す...
-
【エクセル】表の中の文字だけ...
-
excel2003の右クリックメニュー...
-
エクセル VBA・マクロ コピー ...
-
【EXCEL】画像もVLOOKUPさせた...
-
Excel 3列毎のセルを別の表に抽...
-
emacsでコピペ
-
友達のTV録画したDVD-R( SHARP...
-
撮影日時のコピー
-
ショートカットでのコピーと右...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelで行ごとコピー、同じ行を...
-
塗りつぶしの色をコピーするには
-
C+vのvは英語で何の頭文字...
-
エクセルでマクロにてセル色と...
-
WORDのグレー括弧って?
-
【エクセル】表の中の文字だけ...
-
セルに値がある行のみを抽出す...
-
VBAのテキストボックスに文字列...
-
コピーされたセルの文字が途中...
-
エクセルでコピーしたものをコ...
-
Excel 3列毎のセルを別の表に抽...
-
セルから一部だけを抜き出して...
-
マイナスの場合「xxxx-」...
-
Wordの「背景色を消す方法」教...
-
数式による空白を無視して最終...
-
Wiresharkのパケットの詳細のテ...
-
ExcelでA列をコピーしたいので...
-
大学生です。moodle上でのテス...
-
EXCEL 1つ飛ばしのセル参照
-
エクセルで値だけを移動するこ...
おすすめ情報