Игнорировать скрытые строки в L oop VBA - PullRequest
0 голосов
/ 08 января 2020

У меня есть этот код, который получает цены на акции. Все биржевые символы находятся в списке таблиц, теперь, если символ отсутствует в списке наблюдения, его строка будет скрыта. Сейчас моя задача или то, чего я хочу достичь, - это игнорировать эти скрытые строки при получении цены акций. Я просто хочу, чтобы код просто игнорировался. Заранее спасибо за помощь.

Текущий результат таков (те, которые "Нет" в списке наблюдения, являются скрытыми строками, но код все еще возвращает свою цену):

Rows Symbol Price Watchlist ( Фильтр)

1 ABS 17 Да

2 BDO 19 Нет

3 NIKL 4 Да

4 TECH 5 Нет

5 МВт C 10 Да

Я хочу добиться, чтобы код просто игнорировал те акции / строки, которые скрыты от получения цены акций.

Строка Символ Цена Список наблюдения (Фильтр)

1 ABS 17 Да

2 BDO Нет

3 NIKL 4 Да

4 TECH Нет

5 МВт C 10 Да

'Last row find
lastrow = ws.Cells(Rows.Count, "A").End(xlUp).Row

Set rng = ws.Range("A6:A" & lastrow)

'Clear Prior Prices
ws.Range("H6:I" & lastrow).ClearContents

n = 6
'Get Symbols list

For Each x In rng

symbol = x


Set myrequest = CreateObject("WinHttp.WinHttpRequest.5.1")
myrequest.Open "Get", "http://phisix-api.appspot.com/stocks/" & symbol & ".json"
On Error Resume Next
myrequest.Send


If myrequest.ResponseText = "" Then

 i = 0
 ws.Range(Cells(n, 8), Cells(n, 8)) = i
 ws.Range(Cells(n, 9), Cells(n, 9)) = i


 Else

  Dim Json As Object
  Set Json = JsonConverter.ParseJson(myrequest.ResponseText)
    i = Json("stock")(1)("price")("amount")
    ws.Range(Cells(n, 8), Cells(n, 8)) = i
    i = Json("stock")(1)("percent_change") / 100
     ws.Range(Cells(n, 9), Cells(n, 9)) = i


 End If

n = n + 1

Next x

1 Ответ

1 голос
/ 08 января 2020

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

'Last row find
lastrow = ws.Cells(Rows.Count, "A").End(xlUp).Row

Set rng = ws.Range("A6:A" & lastrow)

'Clear Prior Prices
ws.Range("H6:I" & lastrow).ClearContents

n = 6
'Get Symbols list

For Each x In rng

If x.entirerow.Hidden = false then
symbol = x

Set myrequest = CreateObject("WinHttp.WinHttpRequest.5.1")
myrequest.Open "Get", "http://phisix-api.appspot.com/stocks/" & symbol & ".json"
On Error Resume Next
myrequest.Send


If myrequest.ResponseText = "" Then  
 i = 0
 ws.Range(Cells(n, 8), Cells(n, 8)) = i
 ws.Range(Cells(n, 9), Cells(n, 9)) = i

 Else

  Dim Json As Object
  Set Json = JsonConverter.ParseJson(myrequest.ResponseText)
    i = Json("stock")(1)("price")("amount")
    ws.Range(Cells(n, 8), Cells(n, 8)) = i
    i = Json("stock")(1)("percent_change") / 100
     ws.Range(Cells(n, 9), Cells(n, 9)) = i
 End If  
End if
n = n + 1

Next x
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...