2015-11-29 5 views
1

Я хочу вызвать подпрограмму с именем VBCopyFolder с использованием строковых переменных, но получить «Сопоставление типа аргумента ByRef» ошибка при обращении strOldPath при этом. Я немного потерял, как это сделать.Ошибка несоответствия типа аргумента ByRef

VBCopyFolder определяется как:

VBCopyFolder(ByRef strSource As String, ByRef strTarget As String) 

и вызов, что я пытаюсь сделать это:

Dim strOldPath, strNewPath As String 
Call VBCopyFolder(strOldPath, strNewPath) 

Следующие работает отлично:

Call VBCopyFolder("U:\Database\Data.accdb", "Z:\Backups\Data.accdb") 

Как я правильно отформатировать этот вызов?

+3

Попробуйте 'Dim strOldPath Как String, strNewPath As String' –

+0

Это w как это! Я знал, что это было что-то глупое, что я не замечал. Благодаря! –

+3

FWIW [Rubberduck] (http://www.rubberduck-vba.com) имеет проверку кода, которая находит и исправляет именно эту проблему. –

ответ

7

В VBA

Dim strOldPath, strNewPath As String 

эквивалентно

Dim strOldPath As Variant, strNewPath As String 

Если вы хотите обе переменные будут типа String вам нужно использовать

Dim strOldPath As String, strNewPath As String 
Смежные вопросы