我在excel电子表格中有以下代码,需要对其进行修改,以便它只替换一张纸上的输入数据,而不是检查所有纸张。
我需要检查的表格是'新表现(2)'
我很想了解这个过程并了解答案,因为我正在努力学习如何使用宏来做更多事情:)
sub terfuge
Dim WS As Worksheet
Dim Search As String
Dim Replacement As String
Dim Prompt As String
Dim Title As String
Dim MatchCase As Boolean
Prompt = "Replace Merchant ID?"
Title = "Search Value Input"
Search = InputBox(Prompt, Title)
Prompt = "What is the replacement value?"
Title = "Search Value Input"
Replacement = InputBox(Prompt, Title)
For Each WS In Worksheets
WS.Cells.Replace What:=Search, Replacement:=Replacement, _
LookAt:=xlPart, MatchCase:=False
Next
End Sub
此外,是否有人能够告诉我如何进行某种形式的防错 - 我遇到的问题是,如果我在第一个输入框后取消,它会删除已定义的文本(即替换定义的文本空格,因为替换已经定义了)
如果用户点击取消,我怎么能让它无所事事?
答案 0 :(得分:2)
要调用特定工作表,请使用表格(“工作表名称”)。您可以将工作表设置为代码中的变量。在这种情况下,它是变量WS。
Sheets("Sheet1").Range("A1") = "aaa"
将在Sheet1,A1中写aaa
所以会:
dim WS as worksheet
set WS = Sheets("Sheet1")
WS.Range("A1")= "aaa"
在循环中,每个工作表都会分配给变量WS,并且会发生一些事情。只需使用一个指定的工作表更改For Each循环:
Dim WS As Worksheet
Dim Search As String
Dim Replacement As String
Dim Prompt As String
Dim Title As String
Dim MatchCase As Boolean
Prompt = "Replace Merchant ID?"
Title = "Search Value Input"
Search = InputBox(Prompt, Title)
Prompt = "What is the replacement value?"
Title = "Search Value Input"
Replacement = InputBox(Prompt, Title)
Set WS = Sheets("New Performance (2)")
WS.Cells.Replace What:=Search, Replacement:=Replacement, _
LookAt:=xlPart, MatchCase:=False
End Sub
答案 1 :(得分:1)
取出工作表循环。
Dim WS As Worksheet
Dim Search As String
Dim Replacement As String
Dim Prompt As String
Dim Title As String
Dim MatchCase As Boolean
Prompt = "Replace Merchant ID?"
Title = "Search Value Input"
Search = InputBox(Prompt, Title)
Prompt = "What is the replacement value?"
Title = "Search Value Input"
Replacement = InputBox(Prompt, Title)
'Here you will set the worksheet to the sheet you want to search.
Set ws = ActiveWorkbook.Sheets("New Performance (2)")
ws.Activate
WS.Cells.Replace What:=Search, Replacement:=Replacement, _
LookAt:=xlPart, MatchCase:=False
End Sub
对于“防错”,您可以分析回报。
Search = InputBox(Prompt, Title)
If Search = "" then
Exit sub
End if
或者您可以使用消息框。
' Displays a message box with the yes and no options.
Response = MsgBox("Are you sure you want to exit?", vbYesNo)
' If statement to check if the yes button was selected.
If Response = vbYes Then
'Do something
Else
'Do something
End If
These are the return values
Constant Value Description
-------- ----- ----------
vbOK 1 OK
vbCancel 2 Cancel
vbAbort 3 Abort
vbRetry 4 Retry
vbIgnore 5 Ignore
vbYes 6 Yes
vbNo 7 No
答案 2 :(得分:0)
这个For
循环遍历每张表
For Each WS In Worksheets
WS.Cells.Replace What:=Search, Replacement:=Replacement, _
LookAt:=xlPart, MatchCase:=False
Next
要使其仅替换一张纸上的值,请删除for循环并使用Worksheets("New Performance (2)").Cells...
,如下所示:
Worksheets("New Performance (2)").Cells.Replace What:=Search, Replacement:=Replacement, _
LookAt:=xlPart, MatchCase:=False
答案 3 :(得分:0)
首先,不要运行你不理解的代码。话虽如此,在您尝试学习时,请在此处查看代码的这一部分:
For Each WS In Worksheets
WS.Cells.Replace What:=Search, Replacement:=Replacement, _
LookAt:=xlPart, MatchCase:=False
Next
这说'拿走所有开放式工作表。对于这些工作表中的每一个,请一次执行以下任务。
要使其仅适用于您的特定工作表,只需更改正在查看的工作表,如下所示:
Sheets("New Performance(2)").Cells.Replace What:=Search, Replacement:=Replacement, _
LookAt:=xlPart, MatchCase:=False
答案 4 :(得分:0)
这应该可以解决问题:
Dim WS As Worksheet
Dim Search As String
Dim Replacement As String
Dim Prompt As String
Dim Title As String
Dim MatchCase As Boolean
Prompt = "Replace Merchant ID?"
Title = "Search Value Input"
Search = InputBox(Prompt, Title)
Prompt = "What is the replacement value?"
Title = "Search Value Input"
Replacement = InputBox(Prompt, Title)
Set WS = ThisWorkbook.Worksheets("New Performance (2)")
WS.Cells.Replace What:=Search, _
Replacement:=Replacement, _
LookAt:=xlPart, _
MatchCase:=False
解释是:
在您发布的代码中,您循环遍历所有工作表并将WS对象设置为等于每个工作表
所以在我发布的代码中,我通过删除以for和next开头的行来摆脱for循环。 然后我将WS对象设置为等于工作表" New Performance(2)"