子例程中的功能未完全执行

时间:2019-03-21 14:16:07

标签: excel vba function outlook interrupt

我正在尝试使用html发布过程(在函数内)附加电子邮件正文(Excel范围)。只要我不尝试根据创建的html文件设置底层工作表的格式,这就可以正常工作。

“ ###”标记代码中的重要行。

在此代码段中,该函数从底层子程序启动(RangetoHTNL(rng))。

    With OutMail
    .To = rec
    .cc = cc
    .BCC = ""
    .Subject = "Convertibles - Execution " & cover.Range("D4").Value 
    .HTMLBody = StrBody & RangetoHTML(rng) '#### Here the function get launched #####
    .Attachments.Add (filename)
    .Display   'or use .Send
End With

现在奇怪的是,该功能正常运行,直到我想更改列宽为止。在这一行之后,算法会“跳出”函数并执行基础子程序,而无需先完成整个函数。

在该函数的代码片段下方找到我在Excel表格中进行的一些格式设置,然后再将其发布为HTML。

With TempWB.Sheets(1)
    .Cells(1).PasteSpecial Paste:=8
    .Cells(1).PasteSpecial xlPasteValues, , False, False
    .Cells(1).PasteSpecial xlPasteFormats, , False, False

    row = .Range("A" & Rows.Count).End(xlUp).row
    lastcolumn = .Cells(6, Columns.Count).End(xlToLeft).Column
    default = .Range(.Cells(6, 1), .Cells(6, lastcolumn)).Width '-> Default width of whole table Range("A:?")
    ReDim myArray(row)
    For i = 1 To row
    myCell = .Cells(i, 1).text
    mysize = getLabelPixel(myCell)
    myArray(x) = mysize
    Next i

    Max = WorksheetFunction.Max(myArray)
    max_width = Max / con
    default_width = default / con

    If max_width > default_width Then
    prop = max_width / lastcolumn

    '####### until here the function is executed. Then it jumps out #######

    .Columns("1:" & lastcolumn).Width = prop
    .Columns("2:" & lastcolumn).Columns.AutoFit
    '###### without these two lines the function is executed properly #####

    End If
    .Cells(1).Select
    Application.CutCopyMode = False
On Error Resume Next
    .DrawingObjects.Visible = True
    .DrawingObjects.Delete
On Error GoTo 0
End With

有人经历过这样的事情吗?我已经尝试过其他版本的编码(例如,不使用“ With”-语句方法)-没有帮助。

1 个答案:

答案 0 :(得分:2)

我的猜测是您在调用函数的子例程中放置了on error resume next,然后在调整列大小时会发生错误(如果其中一个变量无效,则可能会溢出)。

确保将on error goto 0放在函数调用之前,然后调试函数并检查变量是否有效。

/编辑: 现在我们有一个错误,让我们研究一下。我了解这里会发生错误:

.Columns("1:" & lastcolumn).Width = prop

它看起来不正确,请尝试这样做(确保lastcolumnprop有效):

.Cells(1, lastcolumn).ColumnWidth = prop