Я кодирую задержку для слияния почты в 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