搜索时的颜色格式 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
我目前有一个宏可以搜索 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