2015-05-29 76 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

相關問題