【发布时间】:2012-09-14 04:04:36
【问题描述】:
我目前正在处理一个 Excel VBA 项目,在该项目中我创建了一个按钮,用于根据用户输入查找和替换工作表中的值,用户将在其中提供新的硬件名称、数量和工作表名称新值需要更新。硬件名称是唯一值,因此数量的更新应根据硬件名称进行。
我面临的问题是,当我尝试更新值时,硬件名称正在正确更新,但是在更新数量时,它不仅更新了该特定硬件名称的数量,而且更新了所有与旧数量相匹配的数量。
代码如下所示:
If .ComboBox1.Value <> vbNullString Then
sName = .ComboBox1.Text 'is combobox name
If Len(.OldHW.Value) > 0 And Len(.NewHW.Value) > 0 Then
sOldText = .OldHW.Text 'OldHW and NewHW are textbox names
sNewText = .NewHW.Text
With Worksheets(sName)
.Cells.replace what:=sOldText, Replacement:=sNewText, LookAt:=xlWhole, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
End With
End If
If Len(.Oldqty.Value) > 0 And Len(.Newqty.Value) > 0 Then
qOldText = .Oldqty.Text
qNewText = .Newqty.Text
With Worksheets(sName)
.Cells.replace what:=qOldText, Replacement:=qNewText, LookAt:=xlWhole, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
End With
End If
End If
End With
任何意见将不胜感激...
谢谢。
【问题讨论】:
-
没有什么可以连接您的两个替换操作:第一个只是查找名称,第二个查找数量。您最好遍历行并找到名称的每个实例,然后检查同一行上的数量...