2015-05-28 7 views
0

Я пытаюсь удалить последний символ строки, потому что я заполнить строку с петлей, которая автоматически добавляет «» после того, как добавил каждая новая строка, как:Vba Left Функция не работает

Do Until EOF(1) 
    ... 
    (get string) 
    ... 
    Ref = Ref + String 
    Ref = Ref + "," 
Loop 
Ref = Left(Ref, Len(Ref) - 1)   (Delete last "," of ref) 

При попытке выполнить это я получаю ошибку «Неверное количество аргументов или недопустимое присвоение свойств» в функции LEFT.

Я попытался исследовать эту ошибку, но единственное, что я могу найти, это ссылки на инструменты-ссылки, которые они не являются (насколько мне известно). Нити, которые я нахожу, все для vba для excel, что здесь не так, это код для скрипта, работающего в рабочем пространстве отражения.

Есть ли другой способ удаления последнего символа моей строки? Или что-то не так, что оправдывает эту ошибку? Я не могу понять этого.

Спасибо за ваше время.

ответ

1

Не знаю, почему ваша left функция не работает, что это правильный синтаксис при условии, Ref на самом деле является строкой. Я подозреваю, что тот факт, что вы не предоставили реальный код, скрывает причину от нас.

Имейте в виду, что есть два подпункты в сообщении об ошибке:

Неправильное количество аргументов ИЛИ недействительным присвоение собственности.

This page подробности возможных причин.

В любом случае, это легче всего сделать что-то вроде (псевдо-код похож на свой собственный):

sep = "" 
ref = "" 
do until eof(1) 
    string = getString() 
    ref = ref + sep + string 
    sep = "," 
loop 

Другими словами, создать правильную строку вперед, а не пытаться исправить его впоследствии.

+0

Спасибо! Это в сочетании с первым плакатом дало мне решение, я использую первый запуск цикла, чтобы начать строку справа и твой трюк, чтобы убедиться, что я не добавляю «,» в конце. – Witloofdc

1

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

Это намного легче обнаружить первый запуск цикла, чем последний:

Dim first as Boolean 
first = True 
Do Until EOF(1) 
    ... 
    (get string) 
    ... 
    If first Then 
    first = False 
    Else 
    Ref = Ref + "," 
    End If 
    Ref = Ref + String 
Loop 
+0

Привет, спасибо за ответ, но не могли бы вы дать немного больше информации о своем решении, пожалуйста? Потому что после первого запуска, не всегда ли добавляется «,» после ref? Мой endgoal должен иметь строку типа "('Ref1', 'Ref2', Ref3 ', ...' RefX ')", поэтому я могу использовать эту строку для добавления в запрос. – Witloofdc

Смежные вопросы