使用变量而不定义变量的VBA代码

使用变量而不定义变量的VBA代码,vba,excel,Vba,Excel,我正在处理一个别人编写的宏,我很困惑,因为他们没有定义变量,但仍在使用它。1) 这可能吗?2)excel/vba如何知道变量应该是什么?使用的变量是“theCell”,任何地方都没有定义。代码如下,谢谢: Sub DoTheWork() Sheets("All Data").Activate ActiveSheet.Range("A2").Select ActiveSheet.Range(Selection, Selection.End(xlDown)).Select Set homebo

我正在处理一个别人编写的宏,我很困惑,因为他们没有定义变量,但仍在使用它。1) 这可能吗?2)excel/vba如何知道变量应该是什么?使用的变量是“theCell”,任何地方都没有定义。代码如下,谢谢:

Sub DoTheWork()

Sheets("All Data").Activate

ActiveSheet.Range("A2").Select
ActiveSheet.Range(Selection, Selection.End(xlDown)).Select

Set homebook = ActiveWorkbook
Set homeSheet = Sheets("All Data")
topRow = 2

Application.ScreenUpdating = False
'Application.ScreenUpdating = True

For Each theCell In Selection
    If (theCell.Value <> theCell.Offset(1, 0).Value) Then
        Range("A" & topRow & ":AS" & theCell.Row).Select
        Sheets("e-TAR").Select
        ActiveSheet.Copy
        Set copySheet = ActiveSheet
        Set copyBook = ActiveWorkbook
Sub DoTheWork()
工作表(“所有数据”)。激活
ActiveSheet.Range(“A2”)。选择
ActiveSheet.Range(Selection,Selection.End(xlDown))。选择
设置homebook=ActiveWorkbook
设置主图纸=图纸(“所有数据”)
顶行=2
Application.ScreenUpdating=False
'Application.ScreenUpdating=True
对于选择中的每个单元格
如果(cell.Value)为cell.Offset(1,0.Value),则
范围(“A”&topRow&“:AS”&theCell.Row)。选择
工作表(“电子焦油”)。选择
活动表,收到
设置copySheet=ActiveSheet
设置copyBook=ActiveWorkbook

谢谢

它不知道它应该是什么,所以它会动态创建一个变量类型,它可以处理分配给它的几乎任何东西,包括对象和数组

“最佳实践”是在声明区域的每个代码表顶部放置一条语句。通过在VBE的工具中设置Require变量声明,可以在创建每个代码表时自动执行此操作► 选择权► 编辑器属性页

这将避免愚蠢的编码错误,如拼写错误,以及影响您在变量中使用正确的变量类型
声明。

这是可能的,被认为是不好的做法。未分配变量是变量,这意味着excel使其成为第一次使用时所需的变量。在本例中,它是一个范围变量。如果包含代码的模块顶部没有
选项Explicit
,则允许使用未定义的变量。经常使用它是很好的练习。