Перейти к содержанию
СофтФорум - всё о компьютерах и не только

Vba for application


Рекомендуемые сообщения

Я программер 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

Ссылка на комментарий
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...