ldpr Опубликовано 29 февраля, 2008 Жалоба Поделиться Опубликовано 29 февраля, 2008 Я программер 1с но подняпрягли с вба , поэтому просьба сильно не критиковать: Ошрибка такая: Переменная "а" попадает нормально, дальше идёт попадание в условие , но переменная "Б" всё равно пустая, подскажите что делать Sub my() Dim a As String NewFN = Application.GetOpenFilename(FileFilter:="Excel Files (*.xls), *.xls", Title:="Выберите файл") If NewFN = False Then MsgBox "Файл не выбран" Exit Sub End If Set objCurrentWorkbook = Application.ActiveWorkbook Set objCurrentSheet = Application.ActiveSheet Set objWorkbook = Application.Workbooks.Open(NewFN) Set objSheet = objWorkbook.Sheets(3) schet = Mid(objSheet.Cells(11, 1).Value, 7) LastRows = objSheet.Cells(1, 1).SpecialCells(11).Row LastRow = objCurrentSheet.Cells(1, 1).SpecialCells(11).Row For i = 17 To LastRows If InStr(objSheet.Cells(i, 1).Value, "№") > 0 Then Nomer = InStr(objSheet.Cells(i, 1).Value, "№") + 2 Nomer1 = Mid(objSheet.Cells(i, 1).Value, Nomer) gtdnom = InStr(Nomer1, " ") gtd = Left(Nomer1, gtdnom - 1) NomerI = InStr(objSheet.Cells(i, 1).Value, "инвойс №") + 9 NomerI1 = Mid(objSheet.Cells(i, 1).Value, NomerI) invnom = InStr(NomerI1, " ") inv = Left(NomerI1, invnom - 1) If InStr(Nomer1, ",") > 0 Then gtd2nom = InStr(Nomer1, ",") + 2 gtd2 = Mid(Nomer1, gtd2nom, 23) inv2nom = InStr(NomerI1, ",") + 2 N = Mid(NomerI1, inv2nom) N2 = InStr(N, " ") - 1 invois = Trim(Left(N, N2)) End If End If а = invois If InStr(objSheet.Cells(i, 1).Value, "Итого по") > 0 Then suma = Trim(objSheet.Cells(i, 5).Value) b = a For j = LastRow To 8 Step -1 If InStr(objCurrentSheet.Cells(j, 116).Value, gtd) > 0 Then If InStr(objCurrentSheet.Cells(j, 92).Value, inv) > 0 Then objCurrentSheet.Cells(j, 137).Value = schet objCurrentSheet.Cells(j, 138).Value = Val(suma) Exit For ElseIf InStr(objCurrentSheet.Cells(j, 92).Value, invois) > 0 Then objCurrentSheet.Cells(j, 137).Value = schet objCurrentSheet.Cells(j, 138).Value = Val(suma) Exit For End If ElseIf InStr(objCurrentSheet.Cells(j, 116).Value, gtd2) > 0 Then If InStr(objCurrentSheet.Cells(j, 92).Value, inv) > 0 Then objCurrentSheet.Cells(j, 137).Value = schet objCurrentSheet.Cells(j, 138).Value = Val(suma) Exit For ElseIf InStr(objCurrentSheet.Cells(j, 92).Value, invois) > 0 Then objCurrentSheet.Cells(j, 137).Value = schet objCurrentSheet.Cells(j, 138).Value = Val(suma) Exit For End If End If Next End If Next End Sub Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти