Worksheetfunction sınıfı fonksiyonların VBA da çalışmaması

Deniz_Excel

Altın Üye
Katılım
15 Mart 2016
Mesajlar
134
Excel Vers. ve Dili
MS Excel 2016
Altın Üyelik Bitiş Tarihi
23-10-2026
Arkadaşlar merhaba,

Linkte attığım excelde modülde aşağıdaki kod yazılı. Ancak çalıştırdığımda kod çalışmıyor. Ve bu uyarıyı alıyorum.
Sub or Function not defined
Nerede hata yapıyorum?

Excel link: https://s5.dosya.tc/server7/469qn8/Search_function.xlsm.html

Sub formulas()
If WorksheetFunction.IsNumber(Search("HIGH", Sheets("Sheet1").Range("G5"))) = True Then
Sheets("Sheet1").Range("H5") = 1
Else
Sheets("Sheet1").Range("H5") = 0
End If
End Sub
 

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
6,167
Excel Vers. ve Dili
2019 Türkçe
Merhaba.
Aşağıdaki alternatif yöntemi deneyebilirsiniz.
Kod:
Sub formulas()
    Dim Bul As Range
    With Sheets("Sheet1")
        Set Bul = .Range("G5").Find(what:="HIGH", LOOKAT:=xlPart)
        If Bul Is Nothing Then
            .Range("H5") = 0
        Else
            .Range("H5") = 1
        End If
    End With
End Sub
 
Son düzenleme:

Deniz_Excel

Altın Üye
Katılım
15 Mart 2016
Mesajlar
134
Excel Vers. ve Dili
MS Excel 2016
Altın Üyelik Bitiş Tarihi
23-10-2026
Merhaba.
Aşağıdaki alternatif yöntemi deneyebilirsiniz.
Kod:
Sub formulas()
    Dim Bul As Range
    With Sheets("Sheet1")
        Set Bul = .Range("G5").Find(what:="HIGH", LOOKAT:=xlPart)
        If Bul Is Nothing Then
            .Range("H5") = 0
        Else
            .Range("H5") = 1
        End If
    End With
End Sub
TEşekkür ederim Muzaffer Bey. Bu yolla yapmak benimde aklımdaydı ancak yukarıdaki kodun çalışmamasının nedenini bulamassam çıldıracağım :) Hiç bir neden göremiyorum.
 
Katılım
20 Şubat 2007
Mesajlar
659
Excel Vers. ve Dili
2007 Excel, Word Tr
Merhaba,
Kod:
WorksheetFunction.Search
şeklinde olabilir.
 
Katılım
20 Şubat 2007
Mesajlar
659
Excel Vers. ve Dili
2007 Excel, Word Tr
Ben 2007 türkçe kullanıyorum, şu şekilde hata vermedi:
Kod:
Sub formulas()
If WorksheetFunction.IsNumber(WorksheetFunction.Search("HIGH", Sheets("Sayfa1").Range("G5"))) = True Then
Sheets("Sayfa1").Range("H5") = 1
Else
Sheets("Sayfa1").Range("H5") = 0
End If
End Sub
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,057
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Arkadaşlar merhaba,

Linkte attığım excelde modülde aşağıdaki kod yazılı. Ancak çalıştırdığımda kod çalışmıyor. Ve bu uyarıyı alıyorum.
Sub or Function not defined
Nerede hata yapıyorum?

Excel link: https://s5.dosya.tc/server7/469qn8/Search_function.xlsm.html

Sub formulas()
If WorksheetFunction.IsNumber(Search("HIGH", Sheets("Sheet1").Range("G5"))) = True Then
Sheets("Sheet1").Range("H5") = 1
Else
Sheets("Sheet1").Range("H5") = 0
End If
End Sub
Öncelikle Search fonksiyonunun kullanım şekli yanlış. Bu fonksiyon, Excel'in yerleşik fonksiyonlarından MBUL'un karşılığıdır. Kullanım şeklide worksheetfunction.search(....) şeklindedir. MBUL fonksiyonu sayfa üzerinde kullanıldığında eğer aranan metni bulamazsa #DEĞER! hatası verir. Bu hatanın VBA içinde kontrolü içinde sizin yaptığınız gibi isnumber yada iserror gibi fonksiyonları kullanmak yeterli değildir ve sonuçta yine hata verecektir. Bunun yerine aşağıda verdiğim gibi hata kontrolü yaparak sonuca ulaşabilirsiniz. Eğer hata kontrolü yapmak istemezseniz InStr fonksiyonunuda kullanabilirsiniz.

Kod:
Sub formulas()
On Error Resume Next
bul = WorksheetFunction.Search("HIGH", Sheets("Sheet1").Range("G5"))
If Err = 0 Then
Sheets("Sheet1").Range("H5") = 1
Else
Sheets("Sheet1").Range("H5") = 0
End If
End Sub
Ya da

Kod:
Sub formulas()
if Instr(Sheets("Sheet1").Range("G5"),"HIGH")>0 then
Sheets("Sheet1").Range("H5") = 1
Else
Sheets("Sheet1").Range("H5") = 0
End If
End Sub
 
Son düzenleme:

Deniz_Excel

Altın Üye
Katılım
15 Mart 2016
Mesajlar
134
Excel Vers. ve Dili
MS Excel 2016
Altın Üyelik Bitiş Tarihi
23-10-2026
Levent Bey çok teşekkürler. Bu sorunu da çözdüm sayenizde. Ayrıca problem benim Search ifadesinde buldurduğumu True ya eşitlememden de kaynaklanyormuş. >0 deyip sizin error kontrolünüzü de kombine edince sorun kalmadı.

Akabinde bir merakım daha var. VBA da kimi fonksiyonlar (Vlookup,İndex,countifs) vb gibi worksheetfunction ifadesi başta yazarak çalıştırabiliyorken kimileri (Len,Left,Right,Mid,Trim gibi) yanlız başına direk yazınca çalışıyor. Bu 2 grup fonksiyon arasında ne fark var? Sonuçta 2 gruptakilerde excelin yerleşik fonksiyonlarından.
 

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
6,167
Excel Vers. ve Dili
2019 Türkçe
Workssheetfunction ile yazılmayanlar VBA da bulunan fonksiyonlardır.
kod kısmında VBA yazıp nokta ya basarsanız fonksiyonlar listelenir.
Örnek: VBA.Trim
 
Üst