Ответ Тима был бы моим предпочтением, так как он ускользает.Вы также можете указать несколько селекторов атрибута css = значение с разными операторами и объединить как синтаксис А
ie.document.querySelector("a[onclick^=loadYearPage][onclick*='2018-2019']")
Если любая из этих подстрок появляется на странице только один раз, вы можете уменьшить ее, например
ie.document.querySelector("a[onclick*='2018-2019']")
Используя предоставленную вами страницу, вы действительно можете использовать модификатор contains (*) для поиска по частичной строке в значении атрибута onclick
.Ниже приведен пример, где вы можете передать год в качестве переменной.Я пошел на более короткий селектор для большей скорости.Требуется небольшое ожидание присутствия элемента.Я использовал синхронизированный цикл.
Option Explicit
'https://www.nseindia.com/products/content/derivatives/currency/cd_historical_businessGrowth.htm
Public Sub PerformClick()
Dim ie As InternetExplorer, t As Date, ele As Object
Const MAX_WAIT_SEC As Long = 10
Set ie = New InternetExplorer
Dim yearSelection As String
yearSelection = "2018-2019"
With ie
.Visible = True
.Navigate2 "https://www.nseindia.com/products/content/derivatives/currency/cd_historical_businessGrowth.htm"
While .Busy Or .readyState < 4: DoEvents: Wend
t = Timer
Do
On Error Resume Next
Set ele = .document.querySelector("[onclick*='" & yearSelection & "']")
On Error GoTo 0
If Timer - t > MAX_WAIT_SEC Then Exit Do
Loop While ele Is Nothing
If Not ele Is Nothing Then
ele.Click
While .Busy Or .readyState < 4: DoEvents: Wend
End If
'other code
Stop '<==Delete me later
.Quit
End With
End Sub