Как устранить ошибку несоответствия типов аргументов ByRef при вставке формулы в ячейку? - PullRequest
0 голосов
/ 25 января 2019

Я пытаюсь вставить формулу в ячейку, ссылаясь на функцию ConvertToLetter (см. Мой код). Тем не менее, запуск ConvertToLetter, похоже, не работает, возвращая титулярную ошибку, когда я пытаюсь запустить его с выделением «firstVideoRow». Я думаю, что эта программа не возвращает строку, но это только предположение.

Я уже пытался инициализировать переменные ConvertToLetter в другом месте, но это тоже не работает.

Function ConvertToLetter(iCol As Long) As String
   Dim iAlpha As Long
   Dim iRemainder As Long
   iAlpha = Int(iCol / 27)
   iRemainder = iCol - (iAlpha * 26)
   If iAlpha > 0 Then
      ConvertToLetter = Chr(iAlpha + 64)
   End If
   If iRemainder > 0 Then
      ConvertToLetter = ConvertToLetter & Chr(iRemainder + 64)
   End If
End Function

...

Range(Cells(lastRow + 3, 4)).Formula = "=AVG(" & ConvertToLetter(firstVideoRow) & CStr(4) & ":" & ConvertToLetter(lastRow) & CStr(4) & ")"

1 Ответ

0 голосов
/ 25 января 2019

ConvertToLetter хочет Long по ссылке.Очевидно, вы не объявили firstVideoRow и / или lastRow как Long, поэтому вы получите ошибку.

Вы могли попросить Long по значению, чтобы оно неявно конвертировалось для вас:

Function ConvertToLetter(ByVal iCol As Long) As String

Но на самом деле вы хотите переключиться на нотацию R1C1:

Cells(lastRow + 3, 4).FormulaR1C1 = "=AVG(R4C" & firstVideoRow & ":R4C" & lastRow &")"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...