问题
I'm looking for a way to simplify my code. Perhaps using an array if possible? Any assistance would be much appreciated.
Cells.Replace What:="Invoice EMEA Payment", Replacement:="Invoice", LookAt:=xlWhole
On Error Resume Next
Cells.Replace What:="Invoice EMEA No Payment", Replacement:="Invoice", LookAt:=xlWhole
On Error Resume Next
Cells.Replace What:="Invoice USA Payment", Replacement:="Invoice", LookAt:=xlWhole
On Error Resume Next
Cells.Replace What:="Invoice USA No Payment", Replacement:="Invoice", LookAt:=xlWhole
On Error Resume Next
Cells.Replace What:="Invoice1 Lite EMEA Payment", Replacement:="Invoice1 Lite", LookAt:=xlWhole
On Error Resume Next
Cells.Replace What:="Invoice1 Lite EMEA No Payment", Replacement:="Invoice1 Lite", LookAt:=xlWhole
On Error Resume Next
Cells.Replace What:="Invoice1 Lite USA Payment", Replacement:="Invoice1 Lite", LookAt:=xlWhole
On Error Resume Next
Cells.Replace What:="Invoice1 Lite USA No Payment", Replacement:="Invoice1 Lite", LookAt:=xlWhole
On Error Resume Next
回答1:
Try this out:
Option Explicit
Global ReplaceText(8, 2) As String ' <~ set up a global array of strings and replacements
'build out all of our global constants here
Sub MyVariables()
ReplaceText(1, 1) = "Invoice EMEA Payment"
ReplaceText(1, 2) = "Invoice"
ReplaceText(2, 1) = "Invoice No EMEA Payment"
ReplaceText(2, 2) = "Invoice"
ReplaceText(3, 1) = "Invoice USA Payment"
ReplaceText(3, 2) = "Invoice"
ReplaceText(4, 1) = "Invoice USA No Payment"
ReplaceText(4, 2) = "Invoice"
ReplaceText(5, 1) = "Invoice1 Lite EMEA Payment"
ReplaceText(5, 2) = "Invoice1 Lite"
ReplaceText(6, 1) = "Invoice1 Lite EMEA No Payment"
ReplaceText(6, 2) = "Invoice1 Lite"
ReplaceText(7, 1) = "Invoice1 Lite USA Payment"
ReplaceText(7, 2) = "Invoice1 Lite"
ReplaceText(8, 1) = "Invoice1 Lite USA No Payment"
ReplaceText(8, 2) = "Invoice1 Lite"
End Sub
'implement the find and replace
Sub FindAndReplace()
Dim Idx As Long
Dim MySheet As Worksheet
Call MyVariables ' <~ call the MyVariables sub and boom, you've got the ReplaceText array
Set MySheet = ThisWorkbook.ActiveSheet
With MySheet
For Idx = 1 To UBound(ReplaceText)
.Cells.Replace What:=ReplaceText(Idx, 1), _
Replacement:=ReplaceText(Idx, 2), LookAt:=xlWhole
Next Idx
End With
End Sub
Now that you've got a handy MyVariables sub, you can store any and all global variables there.
来源:https://stackoverflow.com/questions/23419422/replace-multiple-cells