Почему при передаче параметра генерируется ошибка типа аргумента ByRef? - PullRequest
0 голосов
/ 16 октября 2019

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

1 Ответ

1 голос
/ 16 октября 2019

Предполагая, что вы собираетесь заменить 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

Есть ли что-тоЯ с видом? Этот код выглядит просто, и у вас уже есть ответ

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...