[英]Find and replace excel VBA trouble
我目前正在處理一個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
請任何輸入將不勝感激...
謝謝。
這里的問題是您要執行兩個獨立的搜索/替換操作。 結果將完全符合您的描述,所有匹配的qOldText
值將被替換。
正確的方法是當您搜索sOldText
返回對其找到的單元格的引用
Set oCell = Nothing
Set oCell = sName.UsedRange.Find what:=sOldText, LookAt:=xlWhole, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False
然后,在所定位的單元格中替換sOldText,並在相對於所定位的單元格的單元格中替換qOldText。 數量單元格的位置必須取決於圖紙的布局。 例如,如果它在同一行中,則下一列使用:
If Not oCell is Nothing then
oCell = sNewText
oCell.Offset(0,1) = qNewText
End If
從您的問題來看,qOldText似乎毫無用處,除非有我遺漏的東西。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.