2017-08-31 12 views
1

以下のvbaコードを使用して、あるシートから別のシートにセル値をコピーします。値は常に数値になります。ソースとターゲットの両方のセルを数値としてフォーマットしました。しかし、vbaが動くときはいつも、セルフォーマットに変更がないのに、私はメッセージ" Number stored as text"を受け取っています。 どうすれば解決できますか? VBAコード:vbaを使用してセルのフォーマットを変更します

Private Sub Worksheet_Calculate() 
    Application.ScreenUpdating = False 
    Dim ws As Worksheet 
    Set mw = Workbooks("StockScreen.xlsm").Sheets("MW") 
    Set ws = Workbooks("StockScreen.xlsm").Sheets("TimeStampWork") 
    If Value <> mw.Range("A2").Value Then 
     Range("A2,E2").Copy 
     ws.Range("B" & ws.Cells(ws.Rows.Count, "B").End(xlUp).Row + 1).PasteSpecial xlPasteValues 
     Dim Max 
     Dim Min 
     Max = Application.WorksheetFunction.Max(ws.Range("b:b")) 
     Min = Application.WorksheetFunction.Min(ws.Range("b:b")) 


    Sheets("TimeStampWork").Range("F2") = Max 
    Sheets("TimeStampWork").Range("G2") = Min 
End If 
End Sub 
+2

を試してみてください?ソース範囲の '.Value'をターゲット範囲の' .Value'に代入するだけです。 –

+0

@JohnColeman提案していただきありがとうございます。それに応じて私のコードを変更しました – acr

答えて

1

代わり

Range("A2,E2").Copy 
ws.Range("B" & ws.Cells(ws.Rows.Count, "B").End(xlUp).Row + 1).PasteSpecial xlPasteValues 

のものであってもよいが、あなたがしたいすべてがコピー値であれば、なぜ利用全くコピー&ペースト

Range("A2,E2").Copy 
With ws.Range("B" & ws.Cells(ws.Rows.Count, "B").End(xlUp).Row + 1) 
    .PasteSpecial xlPasteValues, , False, False 
    .PasteSpecial xlPasteFormats, , False, False 
End With 
+0

.PasteSpecial xlPasteFormats、False、Falseに範囲外のエラーがペーストされる – acr

+1

「ws.Range( "B"&ws.Cells(ws.Rows.Count、 "B")。 ( '' A2、E2 '')。値 ' – Xire

+0

@acr - ' TimeStampWork'が正当なシート名であることを確認してください。 – Mrig

関連する問題