VBA IsNumber işlevi, belirli bir ifadenin tam sayı olarak değerlendirilip değerlendirilmediğini belirlemek için kullanılır. İfade sayısalsa True, aksi takdirde False döndürür. Bu işlev, VBA makrolarında koşullu mantık veya veri doğrulamasıyla çalışırken kullanışlıdır.
Bir örneğe bakalım. Burada, Sheet1'in A1 hücresindeki değerin sayısal doğasını doğrulamak için "CheckCellValue" adlı bir VBA alt rutini tanımlanmıştır.

Kod, değeri A1 hücresinden alır ve myValue değişkeninde depolar .

“Application.WorksheetFunction” içerisindeki VBA IsNumber fonksiyonunu kullanarak myValue içerisinde saklanan değerin sayısal olup olmadığını kontrol ediyoruz.
Değer gerçekten sayısal ise, mesaj kutusu “A1'deki değer sayısaldır”; aksi takdirde “A1'deki değer sayısal değildir” mesajını görüntüler.

- VBA IsNumber, bir değerin sayısal olup olmadığını kontrol etmek için kullanılır ve sonuca göre TRUE veya FALSE döndürür. Değişkenler, ifadeler veya aralıklarla kullanılabilir.
- VBA IsNumber, bir ifadenin sayısal bir değer olup olmadığını özel olarak kontrol ederken, IsNumeric, belirli sayısal türe bakılmaksızın bir ifadenin sayı olarak değerlendirilip değerlendirilemeyeceğini belirler.
- VBA IsNumber, verilen bir ifadenin zaten sayısal bir değer olup olmadığını değerlendirir ve ifade sayısalsa True, aksi takdirde False değerini döndürür.
- VBA IsNumber fonksiyonunu sayısal olmayan veri türleriyle kullanırken beklenmedik sonuçlar üretebileceğinden dikkatli olun.
Sözdizimi
VBA'da IsNumber fonksiyonunun sözdizimi şöyledir:
IsNumber(İfade)
- İfade, değerlendirmek istediğiniz değer veya ifadedir.
VBA IsNumber Fonksiyonu Nasıl Kullanılır?
VBA IsNumber işlevini kullanmak için şu adımları izleyin:
Adım 1: Excel'i açın ve VBA düzenleyicisini açmak için ALT + F11 tuşlarına basın .

Adım 2 : Menüde “Ekle”ye tıklayıp “Modül”ü seçerek yeni bir modül ekleyin.

Adım 3: VBA IsNumber fonksiyonunu kullanmadan önce değerlendirmek istediğiniz değerleri tutacak değişkenleri bildirin.
Değişkenler , özel gereksinimlerinize bağlı olarak VBA'da Variant, Integer, Double vb. gibi herhangi bir veri türünde olabilir .
Örnek: Dim myValue As Variant
Adım 4: Değerlendirmek istediğiniz değerleri Adım 1'de bildirilen değişkenlere atayın. Bu değerler hücrelerden, kullanıcı girdisinden elde edilebilir veya kod içerisinde hesaplanabilir.
Örneğin: myValue = Sheet1.Range(“A1”).Value
Adım 5: Atanan değerlerin sayısal olup olmadığını kontrol etmek için IsNumber fonksiyonunu çağırın.
Örneğin"
If Application.WorksheetFunction.IsNumber(myValue) ise
Not: VBA IsNumber gibi Excel'in yerleşik fonksiyonlarını kullanmak için, bu yöntemlerin VBA kodu içinde doğrudan yürütülmesine izin verdiği için “Application.WorksheetFunction” kullanmalıyız .
Adım 6: IsNumber fonksiyonunun döndürdüğü sonuca dayanarak, farklı eylemleri yürütmek için koşullu mantığı uygulayabilirsiniz.
MsgBox “A1’deki değer sayısaldır.”
Adım 7: Son olarak makroyu kaydedin ve kodu çalıştırmak için çalıştır'a tıklayın.
Örnekler
VBA IsNumber'ın çalışma prensibini anlamak için bazı örneklere bakalım.
Örnek 1
Bu örnekte, bir hücre aralığında nasıl yineleme yapılacağını ve her hücrenin sayısal bir değer içerip içermediğini nasıl belirleyeceğimizi göreceğiz.

Adım 1: Yeni modülde, “CheckRangeForNumbers” adlı bir alt rutini başlatarak başlıyoruz.

Adım 2: Sonra, Range türünde “rng” adlı bir değişken bildirilir. Bu değişken A1:A10 hücre aralığını temsil edecektir.

Adım 3: Bu adımda “rng” değişkenine Sheet1’deki A1:A10 hücre aralığı atanır.

Adım 4: Sonra, Range türünden cell adlı başka bir değişken bildirilir. Bu değişken, A1:A10 aralığındaki her hücreyi temsil edecektir.

Adım 5 : Bu kod satırında, rng tarafından belirtilen aralıktaki her hücreyi yineleyen bir döngü başlatıyoruz.

Adım 6 : Döngü içerisinde VBA IsNumber fonksiyonu kullanılarak geçerli hücrenin (cell.Value) değerinin sayısal olup olmadığı kontrol edilir.

Adım 7: Hücredeki değer sayısalsa, hücredeki değerin sayısal olduğunu belirten bir ileti kutusu görüntülenir. “cell.Address” geçerli hücrenin adresini döndürür.

Adım 8 : Hücredeki değer sayısal değilse, hücredeki değerin sayısal olmadığını belirten bir mesaj kutusu görüntülenir.

Adım 9: Döngü, aralıktaki bir sonraki hücreye geçer ve aralıktaki tüm hücreler kontrol edilene kadar işlemi tekrarlar.

Adım 10: Şimdi makroyu kaydedin ve çalıştır'a tıklayın.
Kodu çalıştırdığımızda, Sheet1 üzerindeki A1:A10 aralığındaki her bir hücreyi yineliyor.
Her hücre için, IsNumber işlevini kullanarak değerin sayısal olup olmadığını kontrol eder. Sonuca bağlı olarak, hücredeki değerin sayısal olup olmadığını belirten bir ileti kutusu görüntüler. Bu işlem, aralıktaki tüm hücreler kontrol edilene kadar devam eder.



İşte tam kod:
Sub CheckRangeForNumbers()
Dim rng As Range
Set rng = Sheet1.Range(“A1:A10”)
Dim hücre As Range
For Each cell In rng
If Application.WorksheetFunction.IsNumber(cell.Value) Then
MsgBox “Hücredeki değer ” & cell.Address & ” sayısaldır”
Else
MsgBox “Hücredeki değer ” & cell.Address & ” sayısal değildir”
End If
Next Cell
End Sub
Örnek 2
Bu örnekte, VBA IsNumber fonksiyonunu kullanarak belirli bir hücrenin değerinin sayısal olup olmadığını nasıl kontrol edeceğimizi öğreneceğiz.
Adım 1: İlk olarak, “CheckVariableForNumber” adında yeni bir alt rutin tanımlayarak başlayın.

Adım 2: Sonra, Variant türünde “myValue” adlı bir değişken bildirilir. Sheet1'deki A1 hücresinin değeri bu değişkene atanır.

Adım 3: Bu adımda, myValue'da saklanan değerin sayısal olup olmadığını kontrol etmek için VBA IsNumber fonksiyonu kullanılır.

Adım 4: myValue'daki değer sayısal ise, A1 hücresindeki değerin sayısal olduğunu belirten bir ileti kutusu görüntülenir.

Adım 5: myValue'daki değer sayısal değilse, A1 hücresindeki değerin sayısal olmadığını belirten bir ileti kutusu görüntülenir.

Adım 6: Kod çalıştırıldığında Sheet1'deki A1 hücresinden değeri alır ve myValue değişkeninde depolar.
Daha sonra VBA IsNumber fonksiyonunu kullanarak myValue'da saklanan değerin sayısal olup olmadığı kontrol edilir.

İşte tam kod:
Sub CheckVariableForNumber()
Dim myValue As Variant
myValue = Sheet1.Range(“A1”).Value
If Application.WorksheetFunction.IsNumber(myValue) Then
MsgBox “A1'deki değer sayısaldır”
Else
MsgBox “A1'deki değer sayısal değildir”
End If
End Sub
Örnek 3
Bu örnekte, kullanıcıdan girdi istemenin, girdiyi sayısal bir değere dönüştürmenin ve VBA IsNumber fonksiyonunu kullanarak sayısal olup olmadığını belirlemenin nasıl yapılacağını göreceğiz.
Adım 1: “CheckUserInputForNumber” adında yeni bir alt rutin oluşturarak kodu başlatın.

Adım 2: Bu adımda iki değişken tanımlanır: Kullanıcının girdisini bir dize olarak saklamak için “userInput” ve dönüştürülmüş sayısal değeri saklamak için “numericValue”.

Adım 3 : Burada, kullanıcıdan bir değer girmesini isteyen VBA'da bir giriş kutusu kullanıyoruz . Girilen değer userInput değişkeninde saklanır.

Adım 4: VBA IsNumeric fonksiyonu userInput'ta saklanan değerin sayısal bir değere dönüştürülüp dönüştürülemeyeceğini kontrol etmek için kullanılır.

Adım 5: Giriş sayısal ise, VBA'daki CDbl fonksiyonu userInput'taki dize değerini çift hassasiyetli kayan noktalı sayıya dönüştürmek ve "numericValue" değişkeninde depolamak için kullanılır.

Adım 6: IsNumber fonksiyonu numericValue'da saklanan değerin sayısal olup olmadığını kontrol etmek için kullanılır.

Adım 7: Dönüştürülen değer sayısal ise, girdinin sayısal olduğunu belirten bir mesaj kutusu görüntülenir.

Adım 8: Dönüştürülen değer sayısal değilse, girdinin sayısal olmadığını belirten bir mesaj kutusu görüntülenir.

Adım 9: Kullanıcı girişi sayısal değilse, girişin geçersiz olduğunu belirten bir mesaj kutusu görüntülenir.

Adım 10: Kodu kaydedin ve çalıştır'a tıklayın. Kodu çalıştırdığınızda, kullanıcıdan bir değer girmesi istenir.

Girilen değer sayısal ise, değeri sayısal türe dönüştürür ve VBA IsNumber fonksiyonunu kullanarak sayısal olup olmadığını kontrol eder.

Girilen değer sayısal olmadığından geçersiz giriş olduğunu belirten bir mesaj kutusu görüntülenir.

İşte kodun tamamı:
Sub CheckUserInputForNumber()
Dim userInput As String
Dim numericValue As Double
userInput = InputBox(“Bir değer girin:”)
If IsNumeric(userInput) Then
numericValue = CDbl(userInput)
If Application.WorksheetFunction.IsNumber(numericValue) Then
MsgBox “Giriş sayısal”
Else
MsgBox “Giriş sayısal değil”
End If
Else
MsgBox “Geçersiz giriş”
End If
End Sub
