2015-09-29 2 views
0

Мы разработали addin для перевода таких вещей, как номера/имена счетов и номера/имена МВЗ из нашей новой системы в нашу старую систему и наоборот. Он работал до сегодняшнего дня, когда я начал получать ошибку несоответствия типа (ошибка времени выполнения 13).Excel VBA Код ошибки ввода ошибки типа

У нас есть несколько листов. 1 лист для филиалов, 1 лист для учетных записей и т. Д. Форма, используемая для выполнения переводов, обращается к соответствующему листу для извлечения данных для перевода. Ниже приводится несколько переменных и как они объявлены:

Public UB as long 
Public ThisAddIn as string 

ThisAddIn = "TranslateAddIn.xla" 

'Below is the part of the code that is causing the error. 

UB = Workbooks(ThisAddIn).Worksheets("Branches").Cells.Find("*", [A1], , , xlByRows, xlPrevious).Row 

Я проверил «ветвь» лист и не вижу ничего необычного с данными на этом листе.

Я не уверен, что происходит. Этот код работал годами без каких-либо проблем.

Любые предложения были бы весьма полезными. Спасибо за помощь.

+0

Может быть, строка является int? Может быть, попробуйте определить UB как вариант, чтобы увидеть, разрешает ли это это? – tomatosource

+1

@tomatosource 'Integer' и' Long' оба содержат числовые значения, только один имеет больший объем выделенной памяти и поэтому может содержать большие числа. Вы всегда должны использовать 'Long', когда ссылаетесь на номера строк, поскольку' Integer' является только 16-разрядный тип данных, поэтому любые цифры более 32,767 вызовут ошибку переполнения –

+0

@MacroMan, за это хорошо знать. Не был уверен, как «тип-жесткий» vba. – tomatosource

ответ

-2

К сожалению, вы не можете ссылаться на рабочий лист в другой книге по его названию, вместо этого вы должны использовать индекс.

+0

До тех пор, пока объект рабочей таблицы имеет квалификацию с объектом рабочей книги, вы можете ссылаться на нее, используя имя ее листа. –

0

Попробуйте полностью определить объект диапазона в вашем методе поиска. Что-то вроде:

Public UB as long 
Public ThisAddIn as string 

ThisAddIn = "TranslateAddIn.xla" 

'Below is the part of the code that is causing the error. 

With Workbooks(ThisAddIn).Worksheets("Branches") 
    UB = .Cells.Find("*", .Range("A1"), , , xlByRows, xlPrevious).Row 
End With 
+0

.......... спасибо, я собираюсь дать это попробовать и посмотреть, разрешит ли это мой вопрос ..... – Shaves