VBA替换关键字宏

时间:2014-10-15 18:40:11

标签: excel vba excel-vba

我只需要宏来查看我在Excel工作表中的命令列表。

基本上我有一个访问宏,我需要重复每个字段我必须应用它。 我希望制作一个excel宏来为我的访问项目制作宏,并节省很多自己的输入。

我需要这个命令来替换我所拥有的" 0"和" 9" 单元格B2将转到所有" 0"&B3将转到所有" 9"' s 那么我会在后面的C2和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代码我计划更换关键字是这个模板:

    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多个字段来制作代码。

2 个答案:

答案 0 :(得分:2)

您没有准确指定哪行代码导致您获得的错误(如果您很难识别它,请查看“VBA错误处理”),但我相信这个:

.clearformating

是个问题。如果它的类型与您的代码中的类型完全相同,那么当Microsoft命名为“clear formatting”方法时,或者您调用的方法不存在时,Microsoft会输入错字。

此外,整个搜索取决于Selection实际上是什么 - 可能没有达到您所期望的那样,您期望它。

要做的第一件事就是找出确切的指令。当VBA调试对话框出现时,单击[Debug]按钮,非法指令应以亮黄色突出显示。

答案 1 :(得分:1)

好的JC,这应该让你去。

这个例子的假设是:

..您要更改的数据列在名为“数据”的工作表中

..替换关键字存储在名为“Sheet1”

的工作表中

..数据关键字(“0”和“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方法的数据here