如果,然后,使用仅粘贴值

时间:2018-05-04 22:53:37

标签: excel vba excel-vba

我的代码完全有效,除了我似乎无法仅粘贴复制的单元格的值。我如何告诉这段代码只粘贴值,而不仅仅是复制和粘贴单元格。我尝试了谷歌,堆栈等没有运气的每一个变化的粘贴特别我尝试失败!谢谢!

Sheets("AAAA").Select

Dim LR As Long, i As Long
With Sheets("AAAA")
    LR = .Range("H" & Rows.Count).End(xlUp).Row
    For i = 2 To LR
       With .Range("G" & i)
            If .Cells.Value = "NO MATCH" Then
                With Sheets("BBBB")
                    ActiveSheet.Cells(i, 1).Copy .Cells(.Rows.Count, "B").End(xlUp).Offset(1, 0)
                    ActiveSheet.Cells(i, 2).Copy .Cells(.Rows.Count, "C").End(xlUp).Offset(1, 0)
                    ActiveSheet.Cells(i, 3).Copy .Cells(.Rows.Count, "D").End(xlUp).Offset(1, 0)
                    ActiveSheet.Cells(i, 4).Copy .Cells(.Rows.Count, "E").End(xlUp).Offset(1, 0)
                    ActiveSheet.Cells(i, 5).Copy .Cells(.Rows.Count, "F").End(xlUp).Offset(1, 0)
                    ActiveSheet.Cells(i, 7).Copy .Cells(.Rows.Count, "H").End(xlUp).Offset(1, 0)
                    ActiveSheet.Cells(i, 8).Copy .Cells(.Rows.Count, "A").End(xlUp).Offset(1, 0)
                End With
            End If
        End With
    Next i
End With

1 个答案:

答案 0 :(得分:1)

小心嵌套的With语句。也许完全限定内部With中的第二张。

也就是说,您可以完全删除副本,然后使用范围(单元格)的.Text属性将其转换为赋值,仅赋予值。

 .Cells(.Rows.Count, "B").End(xlUp).Offset(1, 0) = ActiveSheet.Cells(i, 1).Text

最好还是使用.Value2

.Cells(.Rows.Count, "B").End(xlUp).Offset(1, 0) = ActiveSheet.Cells(i, 1).Value2

它保留了更多格式并且更具弹性。