簡體   English   中英

查找並替換Excel VBA的麻煩

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM