2015-05-29 68 views
0

我正在为一个字符串搜索多个工作表,一旦找到该字符串,它将它复制到MergedData表单中。粘贴单元格值而不是公式

我遇到的问题是应付公式,而不是价值。我一直在寻找几个小时,似乎无法找到解决方案。

这是我目前使用的代码。

任何帮助,您可以提供非常感谢!

感谢Aarron

Private Sub CommandButton1_Click() 
Dim FirstAddress As String, WhatFor As String 
Dim Cell As Range, Sheet As Worksheet 
    With Application 
     .ScreenUpdating = False 
     .EnableEvents = False 
     .CutCopyMode = False 
    End With 

WhatFor = Sheets("SUB CON PAYMENT FORM").Range("L9") 


Worksheets("MergedData").Cells.Clear 


If WhatFor = Empty Then Exit Sub 


For Each Sheet In Sheets 
    If Sheet.Name <> "SUB CON PAYMENT FORM" And Sheet.Name <> "MergedData" _ 
    And Sheet.Name <> "Details" Then 


With Sheet.Columns(1) 
    Set Cell = .Find(WhatFor, LookIn:=xlValues, LookAt:=xlWhole, _ 
    SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False) 


If Not Cell Is Nothing Then 
    FirstAddress = Cell.Address 
    Do 
    Cell.EntireRow.Copy ActiveWorkbook.Sheets("MergedData").Range("A" & Rows.Count)_ 
    .End(xlUp).Offset(1, 0) 
    Set Cell = .FindNext(Cell) 
    Loop Until Cell Is Nothing Or Cell.Address = FirstAddress 
End If 
End With 
End If 

Next Sheet 

Set Cell = Nothing 
End Sub 
+1

我可以给你的代码,但你可能想尝试录制宏,做糊特殊值,看看代码宏吐奶? –

+0

感谢您的帮助,但在其他人的支持下,我已经设法使其工作。 – atame

+0

回答你自己的问题! (你得到一个徽章:)) – moffeltje

回答

1

与别人一点帮助我的所有必须要做的是更换。

Cell.EntireRow.Copy ActiveWorkbook.Sheets("MergedData").Range("A" & Rows.Count).End(xlUp).Offset(1, 0) 

有了这个:

Cell.EntireRow.Copy 
ActiveWorkbook.Sheets("MergedData").Range("A" & Rows.Count).End(xlUp).Offset(1, 0).PasteSpecial xlValues 
1

不要用目的地使用range.copy的方法,但只能使用复制和使用PasteSpecialXlPasteType = xlPasteValues

Range.PasteSpecial Method (Excel)

+0

我是VBA的新手,我还在学习。我已经尝试过,但是我在多个工作表中搜索一个字符串,我无法获得该类型的代码的工作,我的代码是几周或试验和错误的结果,这是第一个工作。如果你知道更好的方法来做到这一点,我将不胜感激。 – atame

相关问题