当前范围内的重复声明 - 在任何地方都不重复

时间:2015-11-16 20:01:41

标签: excel vba variables integer

我遇到了一个我无法弄清楚的重大问题 它告诉我我有一个重复的声明....但我没有! 我甚至将变量改为其他东西,它仍然说出来。 不幸的是我的代码很疯狂所以我只是粘贴给我错误的部分。 在第二行(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:

3 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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

示例

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 :(得分:0)

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