Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 调试。打印未打印正确的变量值_Excel_Vba_Debugging - Fatal编程技术网

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一起声明。

Put
Option 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
,但我宁愿硬编码,这样我就养成了使用它并知道何时使用它的习惯。