Я писал макрос для "автоматизации" анализа в лаборатории - выдергивания данных из файлов отчетов *.rtf и заполнение определенной таблицы в excel с последующим расчетом различных параметров. Дома на excel 2013 все прекрасно работает, на работе на 2007 версии выдает ошибку "Run-time error '1004': Aplication-defined or object-defined error" - модуль 3, 398 строка в примере. Вот кусок кода, в котором возникает ошибка: [vba]
Код
For Each Sht In ActiveWorkbook.Worksheets flag = 0 For k = 1 To 16 If Sht.Name = Sh(1, k) Then LastRow = Sht.Cells(Rows.Count, 3).End(xlUp).Row If k < 9 Then kk = k + 10 If k > 8 Then kk = k - 6 For j = 0 To m - 1 Sht.Cells(LastRow + 1 + j, 2) = DateValue(Now) Sht.Cells(LastRow + 1 + j, 3) = rab(0, j) Sht.Cells(LastRow + 1 + j, 4) = rab(kk, j) Sht.Cells(LastRow + 1 + j, 5) = lab(kk, j) Sht.Cells(LastRow + 1 + j, 6).FormulaR1C1Local = "=(RC4+RC5)/2" Sht.Cells(LastRow + 1 + j, 7).FormulaR1C1Local = "=RC4-RC5" Sht.Cells(LastRow + 1 + j, 9).FormulaR1C1Local = Sh(2, k) Sht.Cells(LastRow + 1 + j, 8).FormulaR1C1Local = "=(RC6*RC9)/100" Sht.Cells(LastRow + 1 + j, 10).FormulaR1C1Local = "=ЕСЛИ((ABS(RC7))<=RC8;""удовл."";""неудовл."")" Next j flag = 1 If flag = 1 Then Exit For End If Next k Next Sht
Я писал макрос для "автоматизации" анализа в лаборатории - выдергивания данных из файлов отчетов *.rtf и заполнение определенной таблицы в excel с последующим расчетом различных параметров. Дома на excel 2013 все прекрасно работает, на работе на 2007 версии выдает ошибку "Run-time error '1004': Aplication-defined or object-defined error" - модуль 3, 398 строка в примере. Вот кусок кода, в котором возникает ошибка: [vba]
Код
For Each Sht In ActiveWorkbook.Worksheets flag = 0 For k = 1 To 16 If Sht.Name = Sh(1, k) Then LastRow = Sht.Cells(Rows.Count, 3).End(xlUp).Row If k < 9 Then kk = k + 10 If k > 8 Then kk = k - 6 For j = 0 To m - 1 Sht.Cells(LastRow + 1 + j, 2) = DateValue(Now) Sht.Cells(LastRow + 1 + j, 3) = rab(0, j) Sht.Cells(LastRow + 1 + j, 4) = rab(kk, j) Sht.Cells(LastRow + 1 + j, 5) = lab(kk, j) Sht.Cells(LastRow + 1 + j, 6).FormulaR1C1Local = "=(RC4+RC5)/2" Sht.Cells(LastRow + 1 + j, 7).FormulaR1C1Local = "=RC4-RC5" Sht.Cells(LastRow + 1 + j, 9).FormulaR1C1Local = Sh(2, k) Sht.Cells(LastRow + 1 + j, 8).FormulaR1C1Local = "=(RC6*RC9)/100" Sht.Cells(LastRow + 1 + j, 10).FormulaR1C1Local = "=ЕСЛИ((ABS(RC7))<=RC8;""удовл."";""неудовл."")" Next j flag = 1 If flag = 1 Then Exit For End If Next k Next Sht
Согласен. в английском варианте формул аргументы функции идут через запятую, при этом при вставке в ячейку формула автоматом переходит на региональные настройки (в русском разделитель ";")
У меня был случай что не хотел FormulaR1C1Local вставлять длинную формулу, пока не уменьшил ее длину.
Согласен. в английском варианте формул аргументы функции идут через запятую, при этом при вставке в ячейку формула автоматом переходит на региональные настройки (в русском разделитель ";")
У меня был случай что не хотел FormulaR1C1Local вставлять длинную формулу, пока не уменьшил ее длину.devilkurs
Сообщение отредактировал devilkurs - Четверг, 03.03.2016, 17:06
Библиотеку для Word сразу подключил, дело не в этом. Запятые/точки завтра проверю, хотя вроде специально дома региональные настройки выставлял такие же, как и на работе...
Библиотеку для Word сразу подключил, дело не в этом. Запятые/точки завтра проверю, хотя вроде специально дома региональные настройки выставлял такие же, как и на работе...Rakhot
Rakhot, вариант с точками будет работать только на тех компьютерах, где разделитель целой и дробной части точка. С запятыми аналогично-только там, где разделитель запятая. Чтобы работала везде, можно переписать так: [vba]
Rakhot, вариант с точками будет работать только на тех компьютерах, где разделитель целой и дробной части точка. С запятыми аналогично-только там, где разделитель запятая. Чтобы работала везде, можно переписать так: [vba]
Спасибо всем большое, помогло, дело было действительно в точках Я так понимаю, судя по примеру, чтобы вариант с точками работал везде, достаточно первый "если" заменить на "If"?
Спасибо всем большое, помогло, дело было действительно в точках Я так понимаю, судя по примеру, чтобы вариант с точками работал везде, достаточно первый "если" заменить на "If"?Rakhot