搜索时的颜色格式 excel

Color formatting when searching excel

我目前有一个宏可以搜索 excel 传播 sheet,然后将结果放在不同的 sheet 中。唯一的问题是它不会在传输结果时复制颜色格式。这是代码。我试过特殊粘贴,但它对所有结果都不起作用。

Sub Searchcustomer()    
    Dim wb As Workbook: Set wb = ThisWorkbook
    Dim ws As Worksheet
    Set ws = wb.Sheets("Search")

    If ws.Range("B3").Value = "" And ws.Range("B4").Value = "" And ws.Range("B5").Value = "" And ws.Range("B6").Value = "" And ws.Range("B7").Value = "" And ws.Range("B8").Value = "" Then
                MsgBox "Please Enter Data into Table"
                Exit Sub
    End If

    Dim msheet As Worksheet
    Dim ssheet As Worksheet
    Dim stand  As String
    Dim number As String
    Dim customer As String
    Dim states As String
    Dim find As String
    Dim audit As String
    Dim saudit As String
    Dim est As String
    Dim pub As String
    Dim finalrow As Integer
    Dim finalrow2 As Integer
    Dim i As Integer

    Set msheet = Sheet4
    Set ssheet = Sheet5

    number = ssheet.Range("B3").Value
    customer = ssheet.Range("B4").Value
    states = ssheet.Range("B5").Value
    find = ssheet.Range("B6").Value
    audit = ssheet.Range("B7").Value
    saudit = ssheet.Range("B8").Value

    msheet.Select
    finalrow = msheet.Cells(Rows.Count, 1).End(xlUp).Row

    For i = 1 To finalrow
        If IIf(stand <> "", msheet.Cells(i, 1) = number, True) And IIf(number <> "", msheet.Cells(i, 2) = number, True) And IIf(customer <> "", msheet.Cells(i, 3) = customer, True) And IIf(states <> "", Cells(i, 4) = states, True) And IIf(find <> "", Cells(i, 5) = find, True) And IIf(audit <> "", Cells(i, 6) = audit, True) And IIf(saudit <> "", Cells(i, 7) = saudit, True) And IIf(est <> "", msheet.Cells(i, 8) = number, True) And IIf(pub <> "", msheet.Cells(i, 9) = number, True) Then
            msheet.Range(msheet.Cells(i, 1), msheet.Cells(i, 9)).Copy
            ssheet.Range("A100").End(xlUp).Offset(1, 0).Resize(1, 9).Value = msheet.Range(msheet.Cells(i, 1), msheet.Cells(i, 9)).Value

        End If
    Next i

    ssheet.Select
    ssheet.Range("B3").Select
End Sub

请注意,如果您使用

ssheet.Range("A100").End(xlUp).Offset(1, 0).Resize(1, 9).Value = msheet.Range(msheet.Cells(i, 1), msheet.Cells(i, 9)).Value

它只传输值但不传输格式。

如果您使用 .Copy,则需要指定目的地。你没有,因此你的 .Copy 行什么都不做。 * 请参阅下面 Mathieu 的评论。

删除 .Value 行并用以下内容替换 .Copy 行:

msheet.Range(msheet.Cells(i, 1), msheet.Cells(i, 9)).Copy Destination:=ssheet.Range("A100").End(xlUp).Offset(1, 0).Resize(1, 9)

请注意,行计数变量必须是 Long 类型 Excel 的行数超过 Integer 可以处理的数量!

Dim finalrow As Long
Dim finalrow2 As Long
Dim i As Long