gpt4 book ai didi

vba:变量未在 activeCell 中定义

转载 作者:行者123 更新时间:2023-12-03 03:34:23 26 4
gpt4 key购买 nike

我是vba新手,正在学习。我正在努力理解为什么这在 Excel 2016 中失败,并且我的研究一片空白。我有以下代码

Option Explicit

Sub Range_End_Method()

Dim lRow As Long
Dim lCol As Long
Dim i As Integer
Dim rng As Range

Set rng = ActiveCell

lRow = Cells(Rows.Count, 1).End(xlUp).Row

lCol = Cells(1, Columns.Count).End(xlToLeft).Column

Do While rng.Value <> Empty
If InStr(rng.Value, "Petrol") = 0 Then
currentRow = ActiveCell.Row
Worksheets("MySheet").Cells(currentRow, 5) = "Shopping"
Set rng = rng.Offset(1)
rng.Select
Else
currentRow = ActiveCell.Row
Worksheets("MySheet").Cells(currentRow, 9) = "Not Found"
Set rng = rng.Offset(1)
rng.Select
End If
Loop

End Sub

如果我打开 vba 编辑器并将其输入到“Microsoft Excel 对象”表中,我不会收到错误。但是,如果我作为“模块”运行并将我的模块命名为“m_End”,则会出现错误

Compile Error

Variable not defined

它在 vba 编辑器中突出显示的变量是第一个“If 条件”行中的“currentRow”:

currentRow = ActiveCell.Row

我不明白有什么区别以及如何修复错误。

如有任何帮助,我们将不胜感激。

最佳答案

由于您发布了其余代码,该错误显然是因为您没有在 Dim 语句中声明 currentRow 。可能 option Explicit 不在您的工作表模块中,因此没有错误。

无论如何,请转到工具►选项►编辑器►代码设置并选择需要变量声明这将为您节省将来大量的调试时间。也许在您的工作表模块中没有 Option Explicit

我会将其声明为Long

哦,在 VBA 中,将数据类型声明为 Integer 没有任何优点(而且有一些缺点)。无论如何,它们都会在内部转换为多头;并且可以分配的值是有限的。检查数据类型的 VBA 规范以了解各种限制。

关于vba:变量未在 activeCell 中定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43963413/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com