Excel 调试。打印未打印正确的变量值
我有一个宏,可以在不同的电子表格中移动一些数据,我一直在试图弄清楚为什么我的Excel 调试。打印未打印正确的变量值,excel,vba,debugging,Excel,Vba,Debugging,我有一个宏,可以在不同的电子表格中移动一些数据,我一直在试图弄清楚为什么我的Debug.Print不能打印长数据。它打印字符串,但不会打印长字符串 下面的代码不会产生错误消息,数据会按我预期的方式移动,但是当我尝试使用print语句打印到即时窗口时,我得到的只是打印的字符串部分 我曾尝试在我的long上使用CStr()转换为字符串,以防将非字符串与字符串连接时出现问题,结果没有变化。我试着只打印long本身,它打印的只是一个空行到即时窗口 我的问题是: 我的代码有没有理由不打印长文本 我知道宏的
Debug.Print
不能打印长数据。它打印字符串,但不会打印长字符串
下面的代码不会产生错误消息,数据会按我预期的方式移动,但是当我尝试使用print语句打印到即时窗口时,我得到的只是打印的字符串部分
我曾尝试在我的long上使用CStr()
转换为字符串,以防将非字符串与字符串连接时出现问题,结果没有变化。我试着只打印long本身,它打印的只是一个空行到即时窗口
我的问题是:
我的代码有没有理由不打印长文本
我知道宏的结果与我所需要的完全一样,通过使用断点手动验证每个步骤,但为什么是Debug.Print不打印长的
来自Debug.Print的示例结果
Last Row for G90_CTR_WS:
Last Row for L90_CTR_WS:
Last Row for BU_WB:
Last Row for rng1:
Last Row for rng2:
代码:
将
选项放入显式并查看代码在何处爆炸。-
自动写入显式选项的一种方法是在VBEditor>工具>选项中选择“需要变量声明”:
总的来说,我想是这样的:
lr_counter = inv_wb.Worksheets(7).Cells(Rows.Count, "A").End(xlUp).Row
Set rng1 = inv_wb.Worksheets(7).Range("A2:G" & lr_counter)
Debug.Print ("Last Row for G90_CTR_WS: " & lr__counter)
lr\uu计数器
与2\uu一起声明,并与1一起声明。PutOption Explicit
并查看代码在何处爆炸。-
自动写入显式选项的一种方法是在VBEditor>工具>选项中选择“需要变量声明”:
总的来说,我想是这样的:
lr_counter = inv_wb.Worksheets(7).Cells(Rows.Count, "A").End(xlUp).Row
Set rng1 = inv_wb.Worksheets(7).Range("A2:G" & lr_counter)
Debug.Print ("Last Row for G90_CTR_WS: " & lr__counter)
lr\uu计数器
与2\uu一起声明,并与1一起声明。将选项显式
放在模块顶部。然后从lr\uu计数器
找到的任何地方删除多余的下划线。您确实注意到lr\uu计数器
变量名中的Debug.Print()
调用中有两个下划线,对吗?在调用时,请尽量避免使用下划线。它们用于实现接口,可能会导致后续问题line@L8n下划线是PEP8的习惯。我的第一门语言是从Python开始的。@MarekFekete就是这样。不确定我是如何处理两个下划线的,但这解决了问题。将Option Explicit
放在模块顶部。然后从lr\uu计数器
找到的任何地方删除多余的下划线。您确实注意到lr\uu计数器
变量名中的Debug.Print()
调用中有两个下划线,对吗?在调用时,请尽量避免使用下划线。它们用于实现接口,可能会导致后续问题line@L8n下划线是PEP8的习惯。我的第一门语言是从Python开始的。@MarekFekete就是这样。不确定我是如何管理两个下划线的,但这解决了问题。我试图在错误转到0时使用,但它没有做任何事情。原来是双下划线。。。我很喜欢花几个小时在打字上…@Mike SMT-将选项显式
放在模块顶部,然后一旦运行它,它就会指向打字错误。很高兴知道,从现在起,我可能会在开发时使用选项显式
。@Mike SMT-几乎所有人都使用它。它实际上是VBEditor中的一个内置功能,请参见屏幕截图。@感谢您选择在默认情况下添加option Explicit
,但我宁愿硬编码,因此我养成了使用它并知道何时使用它的习惯。我试图在错误转到0时使用,但它没有做任何事情。原来是双下划线。。。我很喜欢花几个小时在打字上…@Mike SMT-将选项显式
放在模块顶部,然后一旦运行它,它就会指向打字错误。很高兴知道,从现在起,我可能会在开发时使用选项显式
。@Mike SMT-几乎所有人都使用它。它实际上是VBEditor中的一个内置功能,请参见屏幕截图。@感谢您选择在默认情况下添加option Explicit
,但我宁愿硬编码,这样我就养成了使用它并知道何时使用它的习惯。