|
вылетает из метода при обращении к ячейке другой книги, помогите
|
|||
---|---|---|---|
#18+
проблема - не хочет драться значение из ячейки в переменную, есть аналогичный макрос в котором все хорошо работает. вот нерабочий: Sub СканированиеПокраска(BookPath As String) Dim Book As Workbook Set Book = Workbooks.Open(BookPath, ReadOnly:=True) ' книга открывается, все хорошо Dim NSpec As String Dim NN As Integer Dim str As String Dim Itogo As String Dim ItogoKras As String Dim Mass As New Collection On Error GoTo err1: Dim n As Integer n = 3 NSpec = Book.Worksheets(1).Cells(4, n) ' на этой строке все ломается, и переходит к err1 NN = InStr(NSpec, "№") str = WorksheetFunction.Trim(Mid(NSpec, NN + 1, Len(NSpec) - NN)) Dim flag As Boolean flag = True Dim strItogo As String Dim i As Integer Dim j As Integer i = j = 1 'Do While flag ' j = 1 ' Do While flag ' strItogo = UCase(Book.Sheets(1).Cells(i, j).Text) ' If InStr(strItogo, "ИТОГО") <> 0 Then ' ItogoKras = Book.Sheets(1).Cells(i, j + 1) ' Itogo = Book.Sheets(1).Cells(i, j + 2) ' flag = False ' End If ' If i > 50 And j > 50 Then ' flag = False ' End If ' j = j + 1 ' Loop ' i = i + 1 'Loop n = 10 Do While Book.Sheets(1).Cells(n, 40) <> "Итого:" n = n + 1 Loop ItogoKras = Book.Sheets(1).Cells(n, 41) Itogo = Book.Sheets(1).Cells(n, 42) Book.Close False Mass.Add NSpec Mass.Add ItogoKras Mass.Add Itogo ЗаписьПокраска Mass Exit Sub err1: MsgBox "Проихошла ошибка во время прочтения книги" Book.Close False Exit Sub End Sub этот работает исправно: Sub СканированиеГибка(BookPath As String) Dim Book As Workbook Set Book = Workbooks.Open(BookPath) Dim Mass As New Collection Dim NOrder As String Dim RowITOGO As Integer Dim Itogo As String Dim NDetal As Integer Dim k As Integer k = 1 NDetal = 1 With Book.Sheets("Спецификация с гибки") NOrder = .Cells(5, 4) 'номер спецификации Do While .Cells(k, 1) <> "№ п/п" k = k + 1 Loop k = k + 2 Do While .Cells(k, 1) <> "" k = k + 1 NDetal = NDetal + 1 ' количество деталей Loop NDetal = k k = 1 Do While InStr(.Cells(k, 1), "ИТОГО") = 0 And k < 150 k = k + 1 Loop RowITOGO = k Itogo = .Cells(RowITOGO, 6) End With Book.Close False Mass.Add NOrder Mass.Add NDetal Mass.Add Itogo ЗаписьГибка Mass End Sub ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2016, 07:43 |
|
вылетает из метода при обращении к ячейке другой книги, помогите
|
|||
---|---|---|---|
#18+
jonikooneпроблема - не хочет браться значение из ячейки в переменную, есть аналогичный макрос в котором все хорошо работает. вот нерабочий: Sub СканированиеПокраска(BookPath As String) Dim Book As Workbook Set Book = Workbooks.Open(BookPath, ReadOnly:=True) ' книга открывается, все хорошо Dim NSpec As String Dim NN As Integer Dim str As String Dim Itogo As String Dim ItogoKras As String Dim Mass As New Collection On Error GoTo err1: Dim n As Integer n = 3 NSpec = Book.Worksheets(1).Cells(4, n) ' на этой строке все ломается, и переходит к err1 NN = InStr(NSpec, "№") str = WorksheetFunction.Trim(Mid(NSpec, NN + 1, Len(NSpec) - NN)) Dim flag As Boolean flag = True Dim strItogo As String Dim i As Integer Dim j As Integer i = j = 1 'Do While flag ' j = 1 ' Do While flag ' strItogo = UCase(Book.Sheets(1).Cells(i, j).Text) ' If InStr(strItogo, "ИТОГО") <> 0 Then ' ItogoKras = Book.Sheets(1).Cells(i, j + 1) ' Itogo = Book.Sheets(1).Cells(i, j + 2) ' flag = False ' End If ' If i > 50 And j > 50 Then ' flag = False ' End If ' j = j + 1 ' Loop ' i = i + 1 'Loop n = 10 Do While Book.Sheets(1).Cells(n, 40) <> "Итого:" n = n + 1 Loop ItogoKras = Book.Sheets(1).Cells(n, 41) Itogo = Book.Sheets(1).Cells(n, 42) Book.Close False Mass.Add NSpec Mass.Add ItogoKras Mass.Add Itogo ЗаписьПокраска Mass Exit Sub err1: MsgBox "Проихошла ошибка во время прочтения книги" Book.Close False Exit Sub End Sub этот работает исправно: Sub СканированиеГибка(BookPath As String) Dim Book As Workbook Set Book = Workbooks.Open(BookPath) Dim Mass As New Collection Dim NOrder As String Dim RowITOGO As Integer Dim Itogo As String Dim NDetal As Integer Dim k As Integer k = 1 NDetal = 1 With Book.Sheets("Спецификация с гибки") NOrder = .Cells(5, 4) 'номер спецификации Do While .Cells(k, 1) <> "№ п/п" k = k + 1 Loop k = k + 2 Do While .Cells(k, 1) <> "" k = k + 1 NDetal = NDetal + 1 ' количество деталей Loop NDetal = k k = 1 Do While InStr(.Cells(k, 1), "ИТОГО") = 0 And k < 150 k = k + 1 Loop RowITOGO = k Itogo = .Cells(RowITOGO, 6) End With Book.Close False Mass.Add NOrder Mass.Add NDetal Mass.Add Itogo ЗаписьГибка Mass End Sub ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2016, 07:47 |
|
вылетает из метода при обращении к ячейке другой книги, помогите
|
|||
---|---|---|---|
#18+
jonikoone, а с какой целью Вы себя цитируете? :) По факту - Вы бы хоть текст ошибки привели. Сидеть и гадать мало желания. Скорее всего в ячейке Book.Worksheets(1).Cells(4, n) значение ошибки. Вот и вылетает, т.к. не может присвоить типу String тип error. Плюс желательно указывать свойство, которое хотите получить от ячейки. Хоть и назначается по умолчанию Value, лучше не рисковать: Код: vbnet 1.
Посмотрите что у Вас в этой ячейке и при необходимости обходите ошибку: Код: vbnet 1. 2. 3.
Больше советовать нечего. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2016, 09:56 |
|
вылетает из метода при обращении к ячейке другой книги, помогите
|
|||
---|---|---|---|
#18+
The_Prist, ошибки не вылетает, в этом то вся загадочность. в принципе разобрался, спасибо за помошь с Iserror. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2016, 12:51 |
|
вылетает из метода при обращении к ячейке другой книги, помогите
|
|||
---|---|---|---|
#18+
jonikooneошибки не вылетает, в этом то вся загадочность. Я может чего-то не понимаю, но как это ошибки нет, если сами пишитеjonikoone NSpec = Book.Worksheets(1).Cells(4, n) ' на этой строке все ломается, и переходит к err1 уберите On Error GoTo err1: и загадочность уйдет, уступив место стандартному показу ошибки. Кажется, это очевидно. Чтобы увидеть ошибку, надо убрать обработчик...Или хотя бы добавить в конец: Код: vbnet 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2016, 14:35 |
|
|
start [/forum/topic.php?desktop=1&fid=61&tid=2173006]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
26ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
42ms |
get tp. blocked users: |
2ms |
others: | 275ms |
total: | 389ms |
0 / 0 |