2017-01-18 14 views
2

私は別のワークブックの列からいくつかの値をコピー&ペーストしようとしています:VBAの値を貼り付けてソースの書式を維持しますか?

ワークブック1

Column A 
10/02/1990 
41 
11/01/2017 
52 

ワークブック2

Column I 
10/02/1990 
41 
11/01/2017 
52 

を私ならば、私は取得しています問題がありますワークブックAの第1列の値をコピーしてワークブック2の第1列に貼り付けます。

Column I 
34331 
41 
121092 
52 

これは、フォーマットがどうにかしてExcelで紛失/混乱するためです。

だから私は、ユーザーがそのようなVBAを使用してこのデータを貼り付けることができ、ボタンを作成しました:

Sub Paste3() 
Dim lastRow As Long 
On Error GoTo ErrorHandler 

lastRow = ActiveSheet.Range("H" & Rows.Count).End(xlUp).Row 
ActiveSheet.Range("H10").PasteSpecial Paste:=xlPasteAllUsingSourceTheme, Operation:=xlNone, SkipBlanks:=False 

Exit Sub 

ErrorHandler: 
MsgBox "Please Copy Values First." 
End Sub 

これは動作し、値がその書式設定を保持します。しかし、セル形式も変わります。

これは、ブック1のセルに黒い境界線があり、フォントが黒く太字であることを意味します。

私は、ブック2のフォントとセルの境界線を保護したいと考えています。これは、次のとおりです。

グレーボーダー、RGB(191、191、191) グレーフォント(RGB 128、128、128) フォントサイズ:11 フォント:Calibri基本的にそれは列のように見える必要が

右の方へ。

enter image description here

私はこれを試してみましたが、それは正しく動作しません、それはそれが想定されていない私のスプレッドシート内の範囲に境界線を追加します。私はむしろちょうど

など、これらの値を貼り付けると、セルの書式を変更することなく、その形式を保つための簡単な方法とフォントの色を見つけるだろう

Sub Paste3() 
Dim lastRow As Long 
On Error GoTo ErrorHandler 

lastRow = ActiveSheet.Range("H" & Rows.Count).End(xlUp).Row 
ActiveSheet.Range("H10").PasteSpecial Paste:=xlPasteAllUsingSourceTheme, Operation:=xlNone, SkipBlanks:=False 

Dim rng As Range 
Set rng = Range("H10:H" & lastRow) 
With rng.Borders 
     .LineStyle = xlContinuous 
     .Color = RGB(191, 191, 191) 
     .Weight = xlThin 
     .Font 
End With 

With rng.Font 
       .TextColor = RGB(128, 128, 128) 
       .Font.Name = "Calibri" 
       .Size = 11 
       .Bold = False 
      End With 
Exit Sub 

ErrorHandler: 
MsgBox "Please Copy Values First." 
End Sub 

正直に言うと、私は間違っているつもりどこ誰かが私を見ることができますしてください?

+2

*貼り付け値*ペースト、まあ、*値*。 *書式*を保持したい場合は、*値以上を貼り付ける必要があります。 –

+0

ペーストの特別な操作を手動で実行しているときにマクロを記録し、Excelが 'PasteSpecial'呼び出しのためにどのようなパラメータを与えられているかを見てください。 –

+0

値と書式を貼り付けます。この記事をチェック:http://stackoverflow.com/questions/25461314/vba-copy-cells-value-and-format – tlemaster

答えて

3

このためPasteSpecialオプションがあります:

ActiveSheet.Range("H10").PasteSpecial Paste:=xlPasteValuesAndNumberFormats, _ 
       Operation:= xlNone, SkipBlanks:=False, Transpose:=False 
関連する問題