簡體   English   中英

Excel VBA-替換值

[英]Excel VBA - Replacing Value

我想用91H,92H,93H,94H,99H替換數字91、92、93、94、99。 但是,每次我第二次運行宏時,宏都會在數字中添加另一個H ,例如,看起來像91HH。 我找不到解決方案。 我不希望宏在數字中添加另一個H。 我希望宏僅將H添加到新值,而不添加到已經更改的值。

Columns("D").Replace What:="92", _
                        Replacement:="92H", _
                        LookAt:=xlPart, _
                        SearchOrder:=xlByRows, _
                        MatchCase:=False, _
                        SearchFormat:=False, _
                        ReplaceFormat:=False
Columns("D").Replace What:="93", _
                        Replacement:="93H", _
                        LookAt:=xlPart, _
                        SearchOrder:=xlByRows, _
                        MatchCase:=False, _
                        SearchFormat:=False, _
                        ReplaceFormat:=False

Columns("D").Replace What:="91", _
                        Replacement:="91H", _
                        LookAt:=xlPart, _
                        SearchOrder:=xlByRows, _
                        MatchCase:=False, _
                        SearchFormat:=False, _
                        ReplaceFormat:=False

Columns("D").Replace What:="94", _
                        Replacement:="94H", _
                        LookAt:=xlPart, _
                        SearchOrder:=xlByRows, _
                        MatchCase:=False, _
                        SearchFormat:=False, _
                        ReplaceFormat:=False

Columns("D").Replace What:="99", _
                        Replacement:="99H", _
                        LookAt:=xlPart, _
                        SearchOrder:=xlByRows, _
                        MatchCase:=False, _
                        SearchFormat:=False, _
                        ReplaceFormat:=False

我沒有發布整個VBA代碼,因為它有點長。

我認為有一種解決方法。 在宏之前添加代碼,用91、92、93、94、99替換91H,92H,93H,94H,99H。新宏將執行以下操作:
答:“ 91H”:刪除“ H”並添加“ H”,即不執行任何操作
B.“ 91”:不適合第一部分,“ H”將添加到第二部分

這應該適用於所看到的任何文本。

通常,您在重復很多代碼。 應該避免這種情況。 一種方法是這樣的:

Option Explicit

Sub ReplaceSomething(columnName As String, lookFor As String, replaceWith As String)

    Dim rngCol      As Range
    Dim rngCells    As Range

    If WorksheetFunction.CountA(Columns(columnName)) = 0 Then Exit Sub
    Set rngCol = Columns(columnName).SpecialCells(2)
    If rngCol Is Nothing Then Exit Sub

    For Each rngCells In rngCol
        If rngCells = lookFor Then
            rngCells = replaceWith
        End If
    Next rngCells

End Sub

Sub TestMe()

    ReplaceSomething "A", "H", "H1"
    ReplaceSomething "B", "H", "H1"
    ReplaceSomething "D", "H", "H1"

End Sub

因此,您可以將列名作為函數ReplaceSomething的參數,它將在列A,B和C中運行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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