3

私はExcelにまったく慣れておらず、このフォーラムにはまったく慣れていません。

以下のフォーラムからコードを取得し、必要に応じて変更しました。

http://pressf1.pcworld.co.nz/showthread.php?90122-Creating-Macro-to-copy-and-paste-data-into-the-next-empty-column

Sub copyTotals()
    Dim TargetSht As Worksheet, SourceSht As Worksheet, SourceRow As Integer, SourceCells As Range
    Set SourceSht = ThisWorkbook.Sheets("DUN - Jan")
    Set TargetSht = ThisWorkbook.Sheets("DUN Jan - Jan,Feb,Mar,Apr")
    Set SourceCells = SourceSht.Range("L36,N36")
    If TargetSht.Range("C11").Value = "" Then
        SourceRow = 1
    ElseIf TargetSht.Range("C41") <> "" Then
        MsgBox ("The sheet is full, you need to create a new sheet")
    Else
        SourceRow = TargetSht.Range("C41").End(xlUp).Row + 1
    End If

    SourceCells.Copy TargetSht.Cells(SourceRow, 3)
End Sub

問題は、貼り付けられた値にソースのフォーマットがあり、値を貼り付けたいだけであるということです。

誰かがこれを手伝ってくれませんか。

4

4 に答える 4

4

.Copy を .PasteSpecial と一緒に使用します。それ以外の:

SourceCells.Copy TargetSht.Cells(2, SourceCol)

これを行う:

SourceCells.Copy
TargetSht.Cells(2, SourceCol).PasteSpecial xlPasteValues
于 2013-01-03T08:56:52.647 に答える
2

これを行うためにコピーして貼り付ける必要はありません (少なくとも Excel 2010 以降ではそう思います)。範囲の .Value をそれ自体に等しく設定するだけです。例えば:

rng.Value = rng.Value

また

Sheet1.Range("A1:A10").Value = Sheet1.Range("A1:A10").Value

.Value "指定された範囲の値を表す Variant 値を返すか、設定します。"

これは、形式ではなく、値に対してのみ機能することに注意してください。

http://msdn.microsoft.com/en-us/library/office/ff195193(v=office.15).aspx

于 2014-10-02T08:42:23.830 に答える
2

マクロレコーダーを使うとこんな感じ。行き詰まった時によく使います。

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
于 2013-01-03T23:30:28.443 に答える
0

セルを右クリックして[形式を選択して貼り付け]を選択すると、値のみを選択できます

編集:マクロの場合、同じ原則で.PasteSpecialxlPasteValuesを次のように使用します

Set rng6 = .Range("A3").End(xlDown).Offset(0, 41)
rng6.Copy
ActiveSheet.Paste Destination:=Worksheets("Positions").Range("W2")
于 2013-01-03T08:51:06.737 に答える