VBA Sap скриптинг, если не найден значок - PullRequest
0 голосов
/ 20 октября 2019

Я новичок в сценариях vba и sap gui, может, кто-нибудь укажет мне правильное направление, пожалуйста?

Думаю, у меня проблема с оператором обработки ошибок, может быть. он должен поместить значение значка (зеленый для каждого примера) в столбец C, если таковой имеется, и оставить столбец C пустым, поставить столбец «Без значка» в столбце B, а затем перейти к следующей ячейке и еще раз проверить, есть ли значок илисейчас.

У меня есть список элементов в Excel (столбец A), который я хочу проверить в sap, и вместо того, чтобы проверять один за другим вручную, я работаю над макросом, чтобы проверить все элементы в Excel ивозвращает значение значка (если в sap зеленый цвет, он должен вернуть значение значка и поместить его в столбец «C»), если он не находит значок, следует указать значение: в столбце «B» значок не найден.

Я попытался поставить сообщение об ошибке дальше, но проблема в том, что он работает только один раз, и затем он начинает помещать одно и то же значение в столбцы C и B независимо от того, есть зеленый значок или нет.

Если я не включаю метод обработки ошибок, когда значок отсутствует, vba показывает, что проблема включена, но когда я делаю следующее, она работает правильно (ставит «значок нет») и завершает работу, завершив макрос:

'=====================Column A contains the Numbers I want to check on sap

on error goto msg

For Each rng In Columns("A").Cells.SpecialCells(xlCellTypeConstants)
Elements= Cells(Elem.Row, "A").Value
If Elem.Value Like "?56*" 

session.findById("wnd[0]/usr/tblSAPDV70ATC_NAST3").Columns.elementAt(0).Width = 4
    session.findById("wnd[0]/usr/tblSAPDV70ATC_NAST3/lblDV70A-STATUSICON[0,1]").SetFocus
    session.findById("wnd[0]/usr/tblSAPDV70ATC_NAST3/lblDV70A-STATUSICON[0,1]").caretPosition = 0
    Value = session.findById("wnd[0]/usr/tblSAPDV70ATC_NAST3/lblDV70A-STATUSICON[0,1]").IconName


Cells(rng.Row, "C") = value

End If
Next

msg:

cells(rng.row, "D").value = "No icon"
End Sub

Thaзаранее. Regads

1 Ответ

0 голосов
/ 22 октября 2019

Вы можете попробовать следующее.

, например:

'==================== Столбец A содержитНомера, которые я хочу проверить на сок

'on error goto msg

For Each rng In Columns("A").Cells.SpecialCells(xlCellTypeConstants)
Elements= Cells(Elem.Row, "A").Value
If Elem.Value Like "?56*" 

on error resume next
session.findById("wnd[0]/usr/tblSAPDV70ATC_NAST3").Columns.elementAt(0).Width = 4
session.findById("wnd[0]/usr/tblSAPDV70ATC_NAST3/lblDV70A-STATUSICON[0,1]").SetFocus
session.findById("wnd[0]/usr/tblSAPDV70ATC_NAST3/lblDV70A-STATUSICON[0,1]").caretPosition = 0
Value = session.findById("wnd[0]/usr/tblSAPDV70ATC_NAST3/lblDV70A-STATUSICON[0,1]").IconName

if err.number = 0 then
   Cells(rng.Row, "C") = Value
else
   Cells(rng.row, "D").value = "No icon"
end if
err.clear
on error goto 0
End If
Next

'msg:

'cells(rng.row, "D").value = "No icon"
End Sub

С уважением, ScriptMan

...