我正在尝试为我的工作创建我的第一个 excel 宏,但我遇到了错误

I am trying to create my first excel macro for my job, but I am getting errors

提问人:DJAMES152 提问时间:11/15/2023 最后编辑:DJAMES152 更新时间:11/16/2023 访问量:88

问:

我正在将 Microsoft Excel 与 365 一起使用。

这个宏是我新工作的每周/每月报告。

我首先让它在 A 列和 C 列中设置两个空白列,
然后我将这些列重命名为我想要的名称。在本例中为“更新”和“NPI 匹配”。

然后,我让它过滤掉我其他列中的一些我不想要数据的保险计划。

我打开了一个完全不同的工作簿,其中包含有关合格处方者的数据,我复制了该工作簿的第 2 列,其中包含我们合格处方者的 NPI 编号列表。

我回到我的原始工作簿,其中有一个列 B,其中包含符合条件的和不符合条件的处方者列表,我创建一个新工作表并将复制的列粘贴到新工作表中。我将这张纸命名为“NPI”。

然后,我回到原始工作簿的“工作表 1”,然后进入 C 列的“单元格 C2”(整个第一行都是标题)。在这个单元格中,我制作了一个 =COUNTIF(NPI,B2) 的 countif 公式并按回车键。然后我自动填充该列一直向下。

现在,这是从“NPI”表中获取符合条件的处方者以及旁边的“B2 列”中的数据并进行比较。然后,我从这个新列中过滤掉不合格的处方者(过滤器中的 0),只剩下符合条件的处方者(过滤器中的 1 个)。

在完成所有这些步骤后,我结束了我的宏,但是当我尝试在相同数据的新日期运行宏时,我收到以下错误。

“运行时错误'9':

下标超出范围”

我运行我的调试器,它在下面的链接中向我展示了这一点。关于发生了什么和/或如何解决它的任何线索?

Selection.Copy
    Windows("11-14-2023macrotestsheet1.xlsx").Activate
    Sheets.Add After:=ActiveSheet
    Columns("A:A").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    ActiveWorkbook.Names.Add Name:="NPI", RefersToR1C1:= _
        "=Sheet2!R1C1:R1048571C1"
    Sheets("Sheet1").Select
    Range("C2").Select
    ActiveCell.FormulaR1C1 = "=COUNTIF(NPI,B2)"
    Range("C2").Select
    Selection.FillDown
    ActiveWindow.ScrollColumn = 2

我的宏有问题吗?当我从第二个工作簿中获取我的 NPI 列表时,我觉得这可能是一个工作簿与另一个工作簿通信的错误。让我知道。

Excel VBA

评论

2赞 BigBen 11/15/2023
您没有名为 open 的工作簿。macrotestsheet1.xlsx
0赞 DJAMES152 11/15/2023
嗯,不过我有。至少我以为我做到了。
2赞 BigBen 11/15/2023
一开始可能有点令人生畏,但强烈建议您阅读如何避免使用 Select,这应该可以帮助您使用变量,避免使用 ,并且通常使您的代码更加健壮。不要使用 ,而是使用变量。, ...如果您没有打开工作簿,这将失败并出现相同的错误。ActivateWindowsWorkbookDim wb As WorkbookSet wb = Workbooks("macrotestsheet1.xlsx")macrotestsheet1.xlsx
0赞 DJAMES152 11/16/2023
我现在有宏工作,但它只能工作到必须打开第二个工作簿,从中复制第二列,然后将其粘贴到原始工作簿中,但只是粘贴到它自己的单独工作表上。不过,它不会从该工作表中获取数据并将其粘贴到原始工作表的 C 列中。我迷路了。
1赞 Tom Brunberg 11/16/2023
我无意挑剔你,但请阅读本网站的帮助,特别是关于提问。你的任务是提供一个最小的可重现的例子。请不要把它写成日记中的一页。相反,展示你现在拥有的代码,并解释它没有做什么。

答: 暂无答案