2017-01-06 7 views
0

ある範囲(Book1)から別の範囲(Book2)の範囲の可変範囲をコピーしようとしています。私は本の変数範囲の値だけに興味があり、これが問題です。だから私は値の最後の行(数式ではない)を見つける必要があります。このフォーラムで私はいくつかのオプションを見つけましたが、私の場合はそれらのどれも動作しません。ここで(コード「コピー詳細USHB」の第二部を見てください - 'をコピーするセルを選択します)私が得たものである:可変範囲の値を式ではなくコピーする

   ''''''Copy Detail by Vendor'''''' 
'Last cell in column 

    Dim WS As Worksheet 
    Dim LastCell As Range 
    Dim LastCellRowNumber As Long 
    Set WS = Worksheets("Detail by Vendor") 
    With WS 
    Set LastCell = .Cells(.Rows.Count, "B").End(xlUp) 
    LastCellRowNumber = LastCell.Row + 1 
    End With 
    Dim wb As Workbook, wb2 As Workbook 
    Dim vFile As Variant 

'Set source workbook 
Set wb = ActiveWorkbook 

'Open the target workbook 
Workbooks.Open Filename:= _ 
     "Book2.xlsm" 
'Set selectedworkbook 
Set wb2 = ActiveWorkbook 

'Select cells to copy 
Sheets("By Vendor").Select 
Range("A2").Select 
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select 
Selection.Copy 

'Go back to original workbook you want to paste into 
wb.Activate 
Sheets("Detail by Vendor").Select 

'Paste starting at the last empty row 
wb.Worksheets("Detail by Vendor").Range("B" & LastCellRowNumber).Select 
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
    :=False, Transpose:=False 
Application.CutCopyMode = False 
Application.ScreenUpdating = True 

        '''''Copy Detail USHB''''' 
'Last cell in column 
    Set WS = Worksheets("Detail USHB") 
    With WS 
    Set LastCell = .Cells(.Rows.Count, "B").End(xlUp) 
    LastCellRowNumber = LastCell.Row + 1 
    End With 
'Activate the target workbook 
wb2.Activate 

'Select cells to copy 
Sheets("Detail USHB").Select 
Dim jLastRow As Long 
jLastRow = Columns("B").Find(What:="*", LookIn:=xlValues, SearchOrder:=xlByRows,  SearchDirection:=xlPrevious).Row 

Range(Selection, ActiveCell.SpecialCells(xlLastRow).Select 
Selection.Copy 

'Go back to original workbook you want to paste into 
wb.Activate 
Sheets("Detail USHB").Select 

'Paste starting at the last empty row 
wb.Worksheets("Detail USHB").Range("B" & LastCellRowNumber).Select 
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
    :=False, Transpose:=False 
Application.CutCopyMode = False 
Application.ScreenUpdating = True 
End Sub 
+5

なぜこの 'java'タグを付けましたか? 「excel-vba」はもっと適切ではないでしょうか? – Andreas

+0

あなたが気にしているのは値です。コピー/ペーストはまったく行いません。 'R.Value = S.Value'単純に' R'と 'S'が適切に設定された範囲変数です。 –

+0

@JohnColemanこの範囲は変わります。私がマージする必要のある範囲は異なります。だから、私の場合にはうまくいきません – Katie

答えて

0

あなたのコメントの後に、私はあなたが次のことをやろうとしていると信じて:

'... 

    '''''Copy Detail USHB''''' 
    Dim D As Range 
    Dim S As Range 
    With wb2.Worksheets("Detail USHB") 
     'Locate the last non-blank value in source range 
     LastRow = .Range("B:B").Find(What:="*", _ 
            LookIn:=xlValues, _ 
            SearchDirection:=xlPrevious).Row 
     'Set range 
     Set S = .Range("B2:B" & LastRow) 
    End With 
    With wb.Worksheets("Detail USHB") 
     'Find last used cell in destination range 
     Set D = .Range("B" & .Rows.Count).End(xlUp) 
     'Offset to next row, and resize appropriately 
     Set D = D.Offset(1, 0).Resize(LastRow - 1, 1) 
    End With 
    'Copy values 
    D.Value = S.Value 
End Sub 
+0

@johncoleman - 私は 'R.Value = S.Value'を' D.Value = S.Value'に変更しました(私は盗作の罪で告発できないように)) – YowE3K

関連する問題