excel - 为什么传递参数会产生错误argumenttype ByRef?
问题描述
我在 VBA 中为邮件合并编写了延迟代码。
我以前从未使用过 VBA。
邮件合并工作正常。现在我想输入一个随机数而不是Call Pause(15)
.
Sub Letter_EN()
' Merges one record at a time to email with a pre-defined delay between messages.
' Sourced from: https://www.msofficeforums.com/mail-merge/38282-email-merge-delay.html
If MsgBox("Wirklich an Company_EN senden?", vbYesNo, "Senden") <> vbYes Then Exit Sub
Application.ScreenUpdating = False
Dim i As Long
With ActiveDocument
For i = 1 To .MailMerge.DataSource.RecordCount
With .MailMerge
.Destination = wdSendToEmail
.MailSubject = "Company wishes you a merry Christmas!"
.MailFormat = wdMailFormatHTML
.MailAddressFieldName = "EMAIL"
.SuppressBlankLines = True
With .DataSource
.FirstRecord = i
.LastRecord = i
.ActiveRecord = i
End With
.Execute Pause:=False
End With
Call Pause(15)
Next i
End With
Application.ScreenUpdating = True
End Sub
Public Function Pause(Delay As Long)
Dim Start As Long
Start = Timer
If Start + Delay > 86399 Then
Start = 0: Delay = (Start + Delay) Mod 86400
Do While Timer > 1
DoEvents ' Yield to other processes.
Loop
End If
Do While Timer < Start + Delay
DoEvents ' Yield to other processes.
Loop
End Function
我知道 300 - 480 秒之间的随机数的公式是:
Dim MyValue As Integer
zahl= Int((480 - 300 + 1) * Rnd + 300)
但是,如果我插入而不是 15 - MyValue 错误参数类型 ByRef 来
解决方案
假设您希望将下面的 15 替换为 300 - 480 范围内的值:
Call Pause(15)
这应该变成:
Dim PauseDelay As Integer
PauseDelay = Int((480 - 300 + 1) * Rnd + 300) ' Stores the random interval between 300-480
Call Pause(PauseDelay) ' Calls Pause with the random interval
有什么我忽略的吗?这段代码看起来很简单,你似乎已经有了答案
推荐阅读
- regex - 如何编写表达式以在表达式之后抓取所有内容,然后在 htaccess 中重写
- css - Safari浏览器中的分页符避免属性
- python - 熊猫:摆脱没有价值的行
- mlflow - MLFlow 项目在运行时抛出 JSONDecode 错误
- elasticsearch - 通过 API 将文档添加到 elasticsearch,通过 kibana 发现它们。如何?
- python - Python以特定顺序生成子列表 - itertools?
- mulesoft - 用于过滤变量值的 MEL 表达式
- fusion360 - 如何在 Fusion 350 中对一端为圆形,另一端为正方形的圆柱体进行调制
- reactjs - Ant Design 的“折叠的内联菜单”错误
- r - D 函数返回零