【问题标题】:Duplicate declaration in current scope - no duplicate anywhere当前范围内的重复声明 - 任何地方都没有重复
【发布时间】:2015-11-16 20:01:40
【问题描述】:

我遇到了一个我无法弄清楚的主要问题 它告诉我我有一个重复的声明......但我没有! 我什至把变量改成了别的东西,它仍然这么说。 不幸的是,我的代码很长,所以我只粘贴给我错误的部分。 在第二行(dim c 作为整数)是我得到错误的地方 即使我将 C 更改为 D,我仍然会收到错误,不知道这怎么可能。 我搜索了一下,搜索显示我整个项目只有DIM C!!!!!!

任何想法,请我疯狂绝望.... 300 小时的编码让它在最后一个微小的简单命令上失败。

真的很感谢!

Dim Msg As String
Dim C As Integer
Dim PrinterName As String

C = 1

On Error GoTo MakePDFError:

ResumePrinting:
If C < 10 Then
    PrinterName = "Verdun_Office on Ne0" & C & ":"
Else
    PrinterName = "Verdun_Office on Ne" & C & ":"
End If

Application.ActivePrinter = PrinterName
ActiveWindow.SelectedSheets.PrintOut Copies:=qty, ActivePrinter:= _
"Verdun_Office on Ne01:", collate:=True

 Worksheets("invoice excel").Activate
 Application.ActivePrinter = PrinterName
ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:= _
"Verdun_Office on Ne01:", collate:=True

Exit Sub

MakePDFError:
C = C + 1
Resume ResumePrinting:

【问题讨论】:

  • 你试过让 C 语言比单个字符更长吗?我建议Dim cValue 或类似的东西。
  • 将“C”更改为“cVariable”之类的字符串,看看是否会发生。我猜 VB/Excel 不喜欢单个字符(也许它是 VB 代码中的“嵌入”变量?)。你在使用option explicit(只是好奇)吗?一般来说,无论如何,使用“有意义”的变量名是一种很好的做法。查看您的代码,我们不知道 C 应该是什么。但是,如果您可能使用iRowtheRow 等,那么它会更清晰,也可能会避免这个范围问题。
  • 我假设您还没有在全球范围内声明C?搜索该变量,但搜索模块,而不仅仅是过程。
  • 删除 Dim C as Integer 然后右键单击 C 并选择定义,它将带您到任何其他声明。
  • 这就是为什么你应该给变量命名以反映它们是什么的原因之一....Dim C 是可怕的做法。

标签: excel vba variables integer


【解决方案1】:

今天发生在我身上,我的问题是我在调用它后变暗(不是仍然变暗)

例子

Sub Dim_Duplicate()
   VarD=23
   'a lot of code here, so you not remember use the VarD before
   Dim VarD as Integer
End Sub

【讨论】:

    【解决方案2】:

    这可能是由于您的变量名称C。如 cmets 中所述,变量的最佳实践(在 VB 和一般编程中)是使用对用户有意义的名称。 C 什么也没告诉我们。看起来您正在使用它来存储行值,那么为什么不使用xRowiRow(注意:不要使用Row,因为这是VB 中的一个特殊词)?

    仔细检查 C 是否未在全局范围内声明,并将其(以及所有实例,请参阅 cmets 中 @Nathan_Sav 的建议)更改为其他内容,例如 iRow

    【讨论】:

      【解决方案3】:

      在我的情况下,这是因为 Dim 语句块在过程中太低了。 我将它们移到顶部,一切都很好。我没有在 Dim 语句之前调用变量。它只是不喜欢在子程序顶部附近没有得到它想要的关注!这些 Dim 语句很敏感。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-08-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多