我正在编写一个电子表格来记录查询,一旦处理完查询后想要将条目的状态更改为已关闭。
目前,在工作表1上,用户可以键入查询代码并选择将其关闭。然后,我想搜索存储所有记录的工作表2,并通过在末尾添加C来更改查询代码。
Private Sub CommandButton8_Click()
Dim Findtext As String
Dim Replacetext As String
ThisWorkbook.Sheets("Sheet 1").Activate
Findtext = Sheets("Sheet 1").Range("C25").Value
Replacetext = Sheets("Sheet 1").Range("E25").Value
ThisWorkbook.Sheets("Sheet 2").Activate
Cells.Replace What:=Findtext, Replacement:=Replacetext, LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
End Sub
C25是用户输入的代码,E2目前是CONCATENATE(C25,“C”) 目前,改变是在表1而不是表2上进行的,我对VBA的经验有限,所以假设我必须遗漏一些东西,但不确定它是什么。
答案 0 :(得分:1)
试试这个。您无需激活工作表,只需添加工作表参考,如下所示。
Private Sub CommandButton8_Click()
Dim Findtext As String
Dim Replacetext As String
With Sheets("Sheet 1")
Findtext = .Range("C25").Value
Replacetext = .Range("E25").Value
End With
Sheets("Sheet 2").Cells.Replace What:=Findtext, Replacement:=Replacetext, LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
End Sub
答案 1 :(得分:0)
您只需使用Find
方法。
此外,无需使用.Activate
Private Sub CommandButton8_Click()
Dim Findtext As String
Dim Replacetext As String
Findtext = Sheets("Sheet 1").Range("C25").Value
Replacetext = Sheets("Sheet 1").Range("E25").Value
Dim myCel As Range
With ThisWorkbook.Sheets("Sheet 2").Cells
Set myCel = .Find(What:=Findtext, LookAt:=xlWhole)
myCel.Value = Replacetext
End With
End Sub