Debug.Print无法打印变量的正确值

时间:2018-09-26 14:17:28

标签: excel vba debugging

我有一个宏,可以在不同的电子表格中移动一些数据,并且我一直试图弄清楚为什么我的Debug.Print没有打印长数据。它会打印字符串,但不会打印长字符串。

下面的代码不会产生错误消息,并且数据会按照我期望的那样移动,但是当我尝试使用打印语句将打印到“即时”窗口时,我得到的只是打印的字符串部分。

我一直尝试使用CStr()转换为字符串,以防万一将非字符串与字符串连接而导致结果不变的问题。我已经尝试过仅打印长条,而它所打印的只是“立即”窗口的空白行。

我的问题是这个:

我的代码是否有理由不打印很长?

我知道MACRO的结果可以通过手动验证每个带有断点的步骤来完全满足我的要求,但是为什么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: 

代码:

On Error GoTo 0
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_counter = inv_wb.Worksheets(6).Cells(Rows.Count, "A").End(xlUp).Row
rng1.Cut Destination:=inv_wb.Worksheets(6).Range("A" & lr_counter + 1)
Debug.Print ("Last Row for L90_CTR_WS: " & lr__counter)

check_for_file = Dir(workbook_directory & "\*backup*")
Set bu_wb = Workbooks.Open(workbook_directory & "\" & check_for_file)

lr_counter = bu_wb.Worksheets(1).Cells(Rows.Count, "B").End(xlUp).Row
Set rng1 = bu_wb.Worksheets(1).Range("B2:B" & lr_counter)
Debug.Print ("Last Row for BU_WB: " & lr__counter)

bu_wb.Close SaveChanges:=False

lr_counter = inv_wb.Worksheets(6).Cells(Rows.Count, "A").End(xlUp).Row
Set rng2 = inv_wb.Worksheets(6).Range("A2:A" & lr_counter)
Debug.Print ("Last Row for rng1: " & lr__counter)

check_for_file = Dir(workbook_directory & "\*vehicle*list*")
Set vl_wb = Workbooks.Open(workbook_directory & "\" & check_for_file)
lr_counter = vl_wb.Worksheets(1).Cells(Rows.Count, "I").End(xlUp).Row
Set rng3 = vl_wb.Worksheets(1).Range("I2:I" & lr_counter)
Debug.Print ("Last Row for rng2: " & lr__counter)

1 个答案:

答案 0 :(得分:2)

放入Option Explicit,然后看代码在哪里爆炸。 -Option Explicit

自动编写Option Explicit的一种方法是在 VBEditor>工具>选项中选择“需要变量声明”:

enter image description here

一般来说,我猜是在这里:

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__counter与2 _并用1声明。