VBA Excel问题和疑问

时间:2014-06-11 13:54:31

标签: excel vba excel-vba

此论坛的新功能也是VBA for Excel的新功能。我以前用过VB但是很久以前我也不熟悉编码所以我只想在这里寻求帮助。

Sub AFK()

    Dim WS As Worksheet
    Dim Search As String
    Dim Replacement As String
    Dim Prompt As String
    Dim Title As String
    Dim MatchCase As Boolean

    Prompt = "What is the original value you want to replace?"
    Title = "Search Value Input"
    Search = InputBox(Prompt, Title)

    Prompt = "What is the replacement value?"
    Title = "Search Value Input"
    Replacement = InputBox(Prompt, Title)

       For Each WS In Worksheets
        WS.Columns(1).Find what:=Search, Lookat:=xlPart, MatchCase:=False
        WS.Columns(5).Replace what:=Replacement
    Next

End Sub

我要做的是让程序查找完全“5000”或我放入的特定值并转到另一列并将另一列中的值更改为我输入的输入。因此,我想在第1列中查找“5000”,然后在第1列中找到所有“5000”之后,它将转到第5列并替换与“5000”在同一行上的所有单元格。尼斯”。我不太确定这是否能解释所有问题,但如果有人可以提供帮助或希望提供帮助,请评论并询问该段落是否不清楚。

由于

1 个答案:

答案 0 :(得分:1)

你说你想"准确地寻找" 5000" "然后你在代码中查看xlPart。如果要精确匹配值,则需要使用xlWhole。更多问题,将您找到的单元格存储到范围变量中,然后引用它来替换。

Dim rng As Range
...
Set rng = WS.Columns(1).Find(what:=Search, Lookat:=xlWhole, MatchCase:=False)
rng.Offset(0, 4).Value = Replacement     ' Offsets 4 columns from found cell and sets value
...

如果你需要查找所有实例,你可以循环搜索范围不断缩小到最后查找下面的一行,或者只是循环遍历该列中的单元格,而不必烦恼任何查找函数。

编辑: 我在Find参数周围添加了括号。这应该修复你的编译错误并使上面的代码工作。在我的Excel中修复它。就循环而言,以下代码逐步浏览Excel中所有使用的行,检查第一列。

Dim i As Integer
...
For i = 1 To WS.UsedRange.Rows.count
    If WS.Cells(i, 1).Value = Search Then
        WS.Cells(i, 5).Value = Replacement
    End If
Next i