Dropdown - On Error Resume Next

Katılım
26 Ekim 2023
Mesajlar
19
Excel Vers. ve Dili
Excel 2016 - Türkçe
Merhaba çok değerli hocalarım.
Bir websitesinde (işyatırım> mali tablolar) 4 adet dropdownlist var, Dropdown'da bilanço dönemleri var.

Her biri için alternatif olarak kod hata vermesin diye dropdown'da olduğundan emin olduğum dönemi (yani son dönemi "2023/9") seçmesini yazıyorum .
Ve ilk istediğim dönemde hata olması - isteğimin dropdownda olmaması- durumunda, kesin olduğunu bildiğim diğer döneme "2023/9" geç diyorum.

kodu yazarken de bu bölümün başına "On Error Resume Next" yazdım lakin, istediğim dönem dropdownda olmasına rağmen o dönemi kısa bir seçip alt satırdaki alternatif döneme "2023/9" a geçiyor.
Örneğin ben 2017/12 yazmışım fakat o 2023/9'a geçiyor.

Kod:
On Error Resume Next
'1
bilanco.FindElementByXPath("/html/body/form/div[4]/div/div[2]/div/div/div[1]/div/div[3]/div/div[2]/div[4]/div/div/div/div/div/div/div/div[1]/div[2]/div[2]/div/table/thead/tr/th[2]/select").AsSelect.SelectByText ("2017/3")

bilanco.FindElementByXPath("/html/body/form/div[4]/div/div[2]/div/div/div[1]/div/div[3]/div/div[2]/div[4]/div/div/div/div/div/div/div/div[1]/div[2]/div[2]/div/table/thead/tr/th[2]/select").AsSelect.SelectByText ("2023/9")

'2

bilanco.FindElementByXPath("/html/body/form/div[4]/div/div[2]/div/div/div[1]/div/div[3]/div/div[2]/div[4]/div/div/div/div/div/div/div/div[1]/div[2]/div[2]/div/table/thead/tr/th[3]/select").AsSelect.SelectByText ("2017/6")

bilanco.FindElementByXPath("/html/body/form/div[4]/div/div[2]/div/div/div[1]/div/div[3]/div/div[2]/div[4]/div/div/div/div/div/div/div/div[1]/div[2]/div[2]/div/table/thead/tr/th[3]/select").AsSelect.SelectByText ("2023/9")

'3

bilanco.FindElementByXPath("/html/body/form/div[4]/div/div[2]/div/div/div[1]/div/div[3]/div/div[2]/div[4]/div/div/div/div/div/div/div/div[1]/div[2]/div[2]/div/table/thead/tr/th[4]/select").AsSelect.SelectByText ("2017/9")

bilanco.FindElementByXPath("/html/body/form/div[4]/div/div[2]/div/div/div[1]/div/div[3]/div/div[2]/div[4]/div/div/div/div/div/div/div/div[1]/div[2]/div[2]/div/table/thead/tr/th[4]/select").AsSelect.SelectByText ("2023/9")

'4

bilanco.FindElementByXPath("/html/body/form/div[4]/div/div[2]/div/div/div[1]/div/div[3]/div/div[2]/div[4]/div/div/div/div/div/div/div/div[1]/div[2]/div[2]/div/table/thead/tr/th[5]/select").AsSelect.SelectByText ("2017/12")

bilanco.FindElementByXPath("/html/body/form/div[4]/div/div[2]/div/div/div[1]/div/div[3]/div/div[2]/div[4]/div/div/div/div/div/div/div/div[1]/div[2]/div[2]/div/table/thead/tr/th[5]/select").AsSelect.SelectByText ("2023/9")

Dropdownda 2017/3 - 6 - 9 yok ama 2017/12 kesin var.
2107/ 3 - 2017/6 - 2017/9 dönemlerinde 2023/9 u ayarlıyor. 2017/12 olmasına rağmen orada yine 2023/9 yapıyor. 2017/12 olması gerekirken.

Yardımlarınız için şimdiden çok teşekkür ederim.
 

ÖmerBey

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2012
Mesajlar
4,334
Excel Vers. ve Dili
2007 Türkçe
Merhaba,
Yazdığınız kodlara göre hata oluşsa da oluşmazsa da kod sırayla işlem yaptığı için sonuçta ikinci kodlarınız geçerli olacaktır. Yani hata oluşursa birinci satırda hata verecek sonra ikinci satırdaki işlemi yapacak. Hata oluşmazsa da birinci satırdaki işlemi yapacak sonra ikinci satırdaki işlemi yapacaktır. Bunu engellemek için araya hata denetimi ekleyip hata varsa ikinci kodunuzu devreye sokmanız hata yoksa ikinci kodu atlamanız gerekiyor.
On Error Resume Next ile birlikte örnek olarak aşağıdaki şekilde bir yapı oluşturabilirsiniz.
Kod:
On Error Resume Next
'Birinci kodunuz
If Err.Number <> 0 Then
    'ikinci kodunuz
    Err.Clear
End If
Daha fazlası için...
İyi çalışmalar...
 
Katılım
26 Ekim 2023
Mesajlar
19
Excel Vers. ve Dili
Excel 2016 - Türkçe
Hocam öncelikle izahınız ve desteğiniz için çok teşekkür ederim. Gayet verimli oldu. Her bir dropdown için ayrı ayrı yaptım. Yazarken biraz uğraştırdı fakat sorunsuz çalıştı. 2015'ten itibaren almak istiyordum. Alternatifli yapınca 72 kod sırf bunun için yazılmış oldu.

Tekrar teşekkür ederim.



Merhaba,
Yazdığınız kodlara göre hata oluşsa da oluşmazsa da kod sırayla işlem yaptığı için sonuçta ikinci kodlarınız geçerli olacaktır. Yani hata oluşursa birinci satırda hata verecek sonra ikinci satırdaki işlemi yapacak. Hata oluşmazsa da birinci satırdaki işlemi yapacak sonra ikinci satırdaki işlemi yapacaktır. Bunu engellemek için araya hata denetimi ekleyip hata varsa ikinci kodunuzu devreye sokmanız hata yoksa ikinci kodu atlamanız gerekiyor.
On Error Resume Next ile birlikte örnek olarak aşağıdaki şekilde bir yapı oluşturabilirsiniz.
Kod:
On Error Resume Next
'Birinci kodunuz
If Err.Number <> 0 Then
    'ikinci kodunuz
    Err.Clear
End If
Daha fazlası için...
İyi çalışmalar...
 

ÖmerBey

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2012
Mesajlar
4,334
Excel Vers. ve Dili
2007 Türkçe
Rica ederim,
İyi çalışmalar...
 
Üst