マクロ初心者です。
指定された項目の列をコピー抽出し、別のシートに貼り付けるマクロを作成したく、
ネットで調べながら以下のもの作成しました。
しかしこれだとコピー元が計算式によって算出された数字だとうまく反映されません。
数字の値のみを貼り付けるにはどこを修正したら良いでしょうか?
説明が下手で申し訳ありません。ご教授のほどよろしくお願い致します。
Sub ColCopy()
Dim xlBook As Workbook
Dim xlSheetOrg As Worksheet
Dim xlSheetSel As Worksheet
Dim xlSheetDst As Worksheet
Dim strDstSheetName As String
Dim rngLastRow As Range
Dim vntIndex As Variant
Dim rngIndexs As Range
Dim rngHeader As Range
Dim lngColSrc As Long
Dim lngColDst As Long
Dim rngTargetCol As Range
Set xlBook = ThisWorkbook
With xlBook
Set xlSheetSel = .Worksheets("sheet3")
Set xlSheetOrg = .Worksheets("Sheet1")
End With
' コピー先シート名取得
strDstSheetName = xlSheetSel.Range("A2").Value
' コピー先シートを初期化(なければ生成)
On Error GoTo ERR_DST_SHEET
Set xlSheetDst = xlBook.Worksheets(strDstSheetName)
With xlSheetDst
.Cells.Clear
End With
On Error GoTo 0
' 項目名を読み取り
With xlSheetSel
Set rngLastRow = .Cells(.Rows.Count, 1).End(xlUp)
Set rngIndexs = .Range(.Cells(4, 100), rngLastRow)
Set rngLastRow = Nothing
End With
' 見出し行の取り込み
Set rngHeader = xlSheetOrg.Rows(2)
' 該当列のコピー
Application.ScreenUpdating = False
With xlSheetDst
lngColDst = 0
For Each vntIndex In rngIndexs
lngColDst = lngColDst + 1
Set rngTargetCol = rngHeader.Find(CStr(vntIndex))
lngColSrc = rngTargetCol.Column
rngTargetCol.EntireColumn.Copy .Cells(1, lngColDst)
Set rngTargetCol = Nothing
Next vntIndex
Set rngIndexs = Nothing
End With
Application.ScreenUpdating = True
GoTo PROC_END
ERR_DST_SHEET:
Set xlSheetDst = Sheets.Add(, Sheets("オリジナル"))
xlSheetDst.Name = strDstSheetName
Resume Next
PROC_END:
Set rngHeader = Nothing
Set xlSheetDst = Nothing
Set xlSheetOrg = Nothing
Set xlSheetSel = Nothing
Set xlBook = Nothing
MsgBox "処理が完了しました。"
End Sub
No.2ベストアンサー
- 回答日時:
[変更前]
rngTargetCol.EntireColumn.Copy .Cells(1, lngColDst)
[変更後]
rngTargetCol.EntireColumn.Copy
.Cells(1, lngColDst).PasteSpecial Paste:=xlPasteValues
No.1
- 回答日時:
初心者とは、ご謙遜を!!
Set、Withステートメントを使いこなしている初心者さんなんて、見たことないです(笑)
一番簡単な方法は、Valueプロパティを代入する方法でしょうかね。
こんな感じです。
.Cells(1, lngColDst).EntireColumn.Value = rngTargetCol.EntireColumn.Value
ただし、対象範囲がEntireColumnなので、時間がかかります。
PasteSpecialメソッドで値張り付という手もありますが、こちらはマクロの記録で、どんなコードを書けば良いか確認してみて下さい。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) オブジェクトが見つかりません 1 2023/06/24 19:43
- Visual Basic(VBA) 形式を選択して貼り付け 以下のコードで「元」シートと「先」シートのA列に同じ値があったら指定範囲をコ 5 2022/11/11 07:30
- Visual Basic(VBA) VBAが止まります。 2 2022/09/02 14:02
- Visual Basic(VBA) Sheet1をフィルターで「りんご」を抽出し、Sheet2へ地域を貼り付ける下記マクロを変更して S 2 2022/12/11 03:01
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
- Visual Basic(VBA) VBAが止まります。 3 2022/08/31 14:09
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- Visual Basic(VBA) Excel vbaについての質問 3 2023/04/18 16:14
- Excel(エクセル) 日付で矢印マクロ 4 2023/07/25 16:47
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelでマクロ実行中に画面を固...
-
エクセル 図形の寸法を取得したい
-
エクセルファイルを値でのみし...
-
VBA Shapes コピーと名前
-
EXCEL VBA 他のアプリケーショ...
-
エクセル マクロ写真帳に一括で...
-
エクセルに写真を挿入するマ...
-
エクセルVBAで納期管理システム...
-
worksheet_changeの一時無効化
-
セルに入力するたびにマクロを...
-
EXCEL 行番号や列番号が選択で...
-
【ExcelVBA】マクロブックを通...
-
ブックの共有でVBAエラー
-
エクセルファイルの回数期限の...
-
シート名を記入する
-
VBAで保存しないで閉じると空の...
-
WPSOffice_マクロの有効化について
-
Excel マクロの編集がグレーに...
-
Excelのマクロでボタンを押すと...
-
エクセル関数>参照ファイル名...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA Shapes コピーと名前
-
Excelでマクロ実行中に画面を固...
-
エクセルファイルを値でのみし...
-
エクセル連番自動印刷について
-
エクセル マクロ写真帳に一括で...
-
エクセルのマクロについて教え...
-
【Excel】マクロでページを追加...
-
セルに入力するたびにマクロを...
-
EXCEL VBA 他のアプリケーショ...
-
VBAで行コピーして挿入
-
エクセルVBAで納期管理システム...
-
EXCEL 行番号や列番号が選択で...
-
ブックの共有でVBAエラー
-
シート名を記入する
-
【ExcelVBA】マクロブックを通...
-
エクセル 図形の寸法を取得したい
-
VB.NETによるEXCELの行挿入
-
ExcelのVBAコードについて教え...
-
エクセルVBA MSGBOXを30秒間出...
-
エクセルに写真を挿入するマ...
おすすめ情報