0

我正在编写一个电子表格来记录查询,一旦处理了查询,就想将条目的状态更改为已关闭。

目前,在工作表 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 的经验有限,所以假设我必须遗漏一些东西出来但不确定它是什么。

4

2 回答 2

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
于 2018-03-08T10:25:50.180 回答
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
于 2018-03-08T10:25:48.627 回答