我有一个宏,可以在不同的电子表格中移动一些数据,并且我一直试图弄清楚为什么我的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)
答案 0 :(得分:2)
放入Option Explicit
,然后看代码在哪里爆炸。 -Option Explicit
自动编写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__counter
与2 _
并用1声明。