VBA'daki GoTo ifadesi bir prosedür içindeki belirli bir satıra atlar. Kod yürütmesinin programcının belirttiği belirli bir satıra atlamasına izin verir. GoTo ifadesinin sözdizimi GoTo line'dır, burada satır argümanı bir satır etiketi veya satır numarası olabilir.
VBA GoTo ifadesinin iki argümanı vardır: VBA'daki GoTo ifadesinin alt yordamdaki referansa atladığı referans ve varsayılan olarak False olarak bildirilen kaydırma işlevi. Aşağıdaki örneği ele alalım:

Bu örnek verilen sayının bir olup olmadığını kontrol eder. Sayı 1 ise, VBA GoTo ifadesini kullanarak Satır 1'e atlar ve "Sayı 1" yazdırır, bu da yine son satıra atlanır. Çıktı, aşağıda gösterildiği gibi hemen sekmede yazdırılır.

- VBA GoTo ifadesi, bir prosedür içindeki belirli bir satıra veya etikete kontrolü aktarmak için kullanılabilir.
- Hata işleme amacıyla veya bir prosedür içinde belirli bir satıra veya etikete atlamak için kullanılabilir.
- GoTo ifadesi aşırı veya yanlış kullanıldığında kodun okunmasını ve anlaşılmasını zorlaştırabilir.
- Hata işleme amacıyla On Error ifadesiyle birlikte kullanılabilir.
- GoTo ifadesi yalnızca göründüğü prosedür içindeki satırlara dallanabilir.
- Akıllıca kullanılmalı ve mümkün olduğunca alternatif kontrol yapıları dikkate alınmalıdır.
Excel VBA'da GoTo İfadesini Kullanmanın 2 Yolu
GoTo ifadesini Excel VBA'da uygulamak için birçok yol kullanabilirsiniz. Burada, GoTo ifadesini Excel VBA'da kullanmanın iki ana yolunu ele alacağız. Bunlar:
- Application.GoTo Yöntemi
- Error Handler Yöntemi
1 – Application.GoTo Yöntemi
Application.GoTo metodu, Excel çalışma sayfasında imleci belirli bir hücreye taşımak ve buna dayalı çeşitli uygulamalar gerçekleştirmek için kullanılır.
Adım 1: Aşağıdaki örneği ele alalım. Burada bir alt prosedür başlatıyoruz. İmleci bir çalışma sayfasındaki belirli bir hücreye taşımak için Application.GoTo yöntemini kullanıyoruz.

Adım 2: Kodu çalıştırdığınızda imleç belirtilen çalışma sayfasına taşınmış olacaktır.

2 – Error Handler Yöntemi
Bir alt yordamda, kod çalıştırma işleminin hatalar nedeniyle durmasını istemediğinizde, hatalar, hata fırlatan kod bölümünü atlayarak işlenebilir. Örneğin,
Hata durumunda Sonraki'ye git
Bu satır Excel VBA'ya hatalara neden olan satırı yok saymasını ve sonraki satıra devam etmesini söyler.
Not: Bir sonraki satırın bir önceki kod satırına bağlı olması durumunda, yani hata veren kısımda, kod satırını atlamak beklenmeyen sonuçlara yol açabilir.
Adım 1: Hata İşleme'yi kullanmanız gereken bir örneği ele alalım. Burada, alt prosedür , kodda bir hata olduğunda yürütmeyi aşağıda gösterildiği gibi “ErrorHandler:” kısmına götürür .

Adım 2: Kodu çalıştırın, aşağıda gösterildiği gibi bir çıktı döndürecektir.

Örnekler
Aşağıda GoTo ifadesinin kullanımını gösteren bazı örnekler bulunmaktadır.
Örnek 1
İlginç bir GoTo İfadesi örneğine bakalım. Örneğin, seçili bir aralığı bir alt dizeyle doldurmak istiyorsunuz. Hücre değeri GoTo ifadesiyle seçilebilir ve VBA MID işlevi başvurusu alt dizeyi bulabilir. Burada, şu dizeyi kullanıyoruz: "Merhaba Dünya."
VBA MID Fonksiyonu, Excel'de Application.GoTo ifadesini kullanarak dizeyi bölmek ve alt dizeyi belirli bir aralıkta yazdırmak için kullanılır. Yukarıdaki ifadeden “World” alt dizesini ediniriz ve “C7” hücresine yazdırırız. Bunu yapmanın adımları aşağıda gösterilmiştir:
Adım 1: Araç çubuğundaki “Geliştirici” bölümüne gidin ve “Visual Basic” seçeneğine tıklayın. Şimdi, VBA Editörü fonksiyonlar ve Alt prosedürler eklemek için açılır. Ardından, yeni bir modül veya boş sayfa oluşturmak için “Ekle” ve “Modül” düğmelerine tıklayın.


Adım 2: Belirtilen aralıktaki alt dizeyi yazdıracak ve bir hücreyi vurgulayacak bir alt rutin bildirin.

Adım 3: Orijinal dize için bir tane ve alt dize değerini depolamak için bir tane olmak üzere iki dize değişkeni bildirin.

Adım 4: Dize değerini bir dize girişiyle başlatın.

Adım 5: VBA MID Fonksiyonu referansıyla, “Dünya” kelimesini başlangıç dizesinden ayırın.

Burada, dizeyi bölüyoruz, 7. pozisyondan başlayıp beş basamak hareket ederek alt dizemizi oluşturuyoruz. 'W' 7. pozisyonda başlıyor ve 'd' 5. pozisyonda. Dolayısıyla, ortaya çıkan alt dize "World" oluyor.
Adım 6: Tanımlanan aralıktaki alt dize değerini yazdır.

Adım 7: GoTo ifadesini kullanarak, içinde alt dize değeri bulunan hücreye gidin.

Burada, Scroll argümanı True olarak verilmiştir. GoTo ifadesinin iki argümanı vardır: reference ve scroll. Scroll, çalışma sayfasını belirtilen aralığa kadar kaydırmak ve görüntülemek için kullanılır. Çalışma sayfasını kaydırarak tam hücreyi gösterecektir. GoTo ifadesini kullanarak bir Excel Çalışma Sayfasında belirli hücre değerlerini vurgulamak faydalıdır.
Kod:
Sub GoToWithMID()
Dim myString As String
Dim subString As String
myString = “Merhaba Dünya”
subString = Mid(myString, 7, 5)
Range(“C7”).Value = subString
Application.Goto Range(“C7”), scroll:=True
End Sub
Adım 8: Yukarıdaki kodu F5 tuşuna veya Excel araç çubuğunun üzerindeki Çalıştır düğmesine basarak çalıştırın.

Adım 9: Excel Çalışma Sayfasını görüntüleyin.

GoTo ifadesinde “Scroll” argümanını True olarak bildirdiğimizden, alt rutin “C7” hücresine “World” yazdırdı ve hücre değerini vurgulayarak oraya doğru kaydırdı.
Örnek 2
Kullanıcının belirli bir hücre değerine kaydırmak için bir prosedüre ihtiyaç duyduğu ancak geçersiz bir girdi girildiğinde kodun çalışmasını durdurmaması gereken bir örneği ele alalım. Bu, GoTo İfadesi kullanılarak yapılabilir. Aşağıda gösterilen adımlara başvurarak bunu nasıl yapacağımızı görelim:
Adım 1: Hücre değerini kaydırmak ve görüntülemek için bir alt prosedür başlatın.

Adım 2: Kod bir hata verdiğinde “ErrorHandler” satırına atlamak için bir GoTo ifadesi tanımlayın.

ErrorHandler satırı aşağıda tanımlanmıştır.

Hata türünü bir mesaj kutusuna yazdırır ve ardından temizler.
Adım 3: Kullanıcıdan bir girdi aralığı kabul edin.

Adım 4: Aralık veri türünü başlatın ve kullanıcı tarafından verilen giriş aralığını değişkene ayarlayın.

Adım 5: Kullanıcının verdiği girdinin boş olup olmadığını kontrol etmek için bir If-Else ifadesi başlatın ve girdi boşsa “Geçersiz hücre adresi!” yazdırın.

Adım 6: Kodda hata yoksa alt prosedürden çıkılır, yoksa ErrorHandler ifadesi yürütülür.

Kod:
Sub GoToPracticalExample()
On Error GoTo ErrorHandler
Dim userInput As String
userInput = InputBox(“Enter a cell address:”)
Dim rng As Range
Set rng = Range(userInput)
If Not rng Is Nothing Then
Application.Goto rng, scroll:=True
Else
MsgBox “Invalid cell address!”
End If
Exit Sub
ErrorHandler:
MsgBox “An error occurred: ” & Err.Description
Err.Clear
End Sub
Adım 7: Yukarıdaki kodu F5 tuşuna veya Excel VBA araç çubuğundaki yeşil ok tuşuna basarak çalıştırın.

Adım 8: Çıktı aşağıda gösterildiği gibidir.


Eğer geçersiz bir girdi verilirse, aşağıda gösterildiği gibi şunu elde ederiz:


Bu, GoTo ifadesi kullanılarak Hata İşlemenin Excel VBA'da nasıl kullanıldığına dair bir örnektir.
Dikkat Edilmesi Gereken Önemli Noktalar
- GoTo ifadesi gerektiğinde hata işleme amacıyla kullanılabilir.
- Kodun okunabilirliğini ve sürdürülebilirliğini artırdığında GoTo ifadesini kullanın.
- GoTo ifadesinin aşırı, gereksiz veya kafa karıştırıcı kullanımından kaçının. Örneğin, kodun okunabilirliğini azalttığı ve ek hatalara neden olabileceği için GoTo işlevini kod satırlarını atlamak için kullanmayın.
- GoTo ifadesini yanlış kullanarak “spagetti kod” oluşturmayın.
- Kodunuzda birincil kontrol yapısı olarak GoTo ifadesini kullanmaktan kaçınmak en iyisidir.
