VBA替换关键字宏



我只需要宏就可以进入excel工作表中的命令列表。

基本上,我有一个在访问中制作的宏,我需要在每个字段中重复,我必须将其应用到它。我希望制作一个excel宏,为我的访问项目制作宏,并节省大量的打字时间。

我需要这个命令来替换我的关键字"0"one_answers"9"单元格B2将转到所有"0",而B3将转到所有的"9"那么我将在下面的列C2&C3、D2&D3等但现在我已经把它放在B栏了。

然而,无论我做什么,我都会得到一个"运行时‘450’:参数数量错误或属性分配无效"的错误。

    Sub replace()
        selection.find.clearformating
        selection.find.Replacement.clearformating
        With selection.find
            .Text = "0"
            .Replacement.Text = Worksheets("Sheet1").Range("B2")
            .Forward = True
            .Wrap = wdFindContinue
            .Format = False
            .MatchCase = False
            .MatchWholeWord = False
            .MatchWildcards = False
            .MatchSoundsLike = False
            .MatchAllWordForms = False
            .Execute
        End With
    selection.find.Execute replace:=wdReplaceAll
    End Sub

这就是我现在所拥有的。

我的vba代码在访问im计划替换中的关键字是这个模板:

    Private Sub Form_Current()
    DoEvents
    If Me!0 = "-1" Then
    Me!9.Visible = True
    Else
    Me!9.Visible = False
    End If
    End Sub
    Private Sub 0_Click()
    DoEvents
    If Me!0 = "-1" Then
    Me!9.Visible = True
    Else
    Me!9.Visible = False
    End If
    End Sub

所以让我知道,如果你有任何想法来修复excel宏,并节省我很多打字。我有大约300多个字段可以用来编写代码。

您没有准确指定导致错误的代码行(如果您很难识别,请查看"VBA错误处理"),但我相信这一点:

.clearformating

是个问题。如果在你的代码中键入的与此完全相同,要么是微软在命名"清除格式"方法时拼写错误,要么是你调用了一个不存在的方法。

此外,整个搜索取决于Selection的实际内容——它可能没有达到你的预期,也没有达到你预期的位置

要做的第一件事就是弄清楚到底是什么指令爆炸了。当VBA调试对话框出现时,单击[debug]按钮,非法指令应以亮黄色突出显示。

好吧,JC,这应该会让你开始。

这个例子的假设是:

您正在更改的数据列在名为"数据"的表格中

替换关键字存储在名为"Sheet1"的表格中

数据关键字("0"one_answers"9")作为文本值存储在工作表数据中-您需要处理多位数的"数字",即"0"将被替换为"0"、"10"、"100"等。

根据您的Q,列号表示要替换的数据的列AND和存储该列的替换值的列

不能保证这将在Access VBA中运行,但您应该了解一种方法。

'This is the calling sub to iterate through your data
Sub callsub()
   Dim startcol As Long, endcol As Long, c As Long
   startcol = 2  'col B
   endcol = 4    'col D
    For c = startcol To endcol
        Call replace(c)  'replace keywords in Col no c
    Next c
End Sub

    'This Sub will replace two keyword values per call in the column (number) passed to it
    Sub replace(col)
        With Sheets("Data")
            repstr0 = Worksheets("Sheet1").Cells(2, col)
            .Columns(col).replace What:="0", Replacement:=repstr0, SearchOrder:=xlByColumns, MatchCase:=True
            repstr9 = Worksheets("Sheet1").Cells(3, col)
            .Columns(col).replace What:="9", Replacement:=repstr9, SearchOrder:=xlByColumns, MatchCase:=True
        End With
    End Sub

关于使用Range.Replace方法的数据可以在此处找到

最新更新