Özellik ikonu

Application.OnKey

İndirme izni yok

Genel Bakış

Application.OnKey (Application.OnKey method), belirttiğiniz tuşa ya da tuş birleşimine basıldığında çalışacak bir yordam (makro) atamanızı sağlayan yöntemdir. Excel'in yerleşik kısayollarını geçici olarak başka bir makroya yönlendirebilir, tamamen devre dışı bırakabilir ya da eski haline döndürebilirsiniz.

Söz dizimi​

Yöntemin genel biçimi aşağıdadır:
VBA
Application.OnKey Key, Procedure
  • Key: Zorunlu. Basılacak tuşu ya da tuş birleşimini gösteren metindir (ör. "^m", "{F8}", "%{LEFT}").
  • Procedure: İsteğe bağlı. Çalıştırılacak yordamın adını içeren metindir. Bu bağımsız değişkeni hiç yazmazsanız tuş Excel'in normal davranışına döner. Boş metin ("") verirseniz tuşa basıldığında hiçbir şey olmaz; yani tuş devre dışı kalır. Varsayılan değeri yoktur.
Yöntem bir değer döndürmez. Atama uygulama düzeyindedir; yani Excel'de açık tüm çalışma kitaplarını etkiler.

Key bağımsız değişkeninde kullanılan kodlar​

Tuş birleşimlerinde değiştirici tuşlar için şu işaretler kullanılır:
  • + (artı): Shift tuşu.
  • ^ (şapka): Ctrl tuşu.
  • % (yüzde): Alt tuşu.
Özel tuşlar küme parantezi içinde yazılır:
  • {BACKSPACE}, {DELETE} (ya da {DEL}), {ENTER}, {ESCAPE} (ya da {ESC}), {TAB}, {INSERT}: Düzenleme ve denetim tuşları.
  • {HOME}, {END}, {PGUP}, {PGDN}: Sayfa ve satır gezinme tuşları.
  • {UP}, {DOWN}, {LEFT}, {RIGHT}: Yön tuşları.
  • {F1} ... {F15}: İşlev tuşları.
  • {CAPSLOCK}, {NUMLOCK}, {SCROLLLOCK}, {BREAK}, {CLEAR}, {RETURN}: Diğer özel tuşlar.
  • ~ (yaklaşık işareti): Ana klavyedeki Enter tuşu.
+, ^, %, ~, (, ), {, }, [ ve ] karakterlerinin kendisini atamak için karakteri küme parantezi içine alın (ör. {+}). Harf tuşlarında küçük harf kullanın ve Shift gerekiyorsa + işaretiyle açıkça belirtin. Örneğin Ctrl+Shift+F2 için "^+{F2}" yazılır.

Yordam adı, kapsam ve ömür​

Procedure olarak verdiğiniz makro bağımsız değişken almayan bir Sub olmalı ve standart bir modülde yer almalıdır. Başka bir kitaptaki makroyu çağıracaksanız adı kitap adıyla birlikte yazın:
VBA
Application.OnKey "^m", "'Satis.xlsm'!TutarHesapla"
Atama dosyaya kaydedilmez; Excel kapanınca ya da yeni bir OnKey çağrısıyla sıfırlanınca kaybolur. Bu nedenle atamayı genellikle Workbook_Open olayında yapar, Workbook_BeforeClose olayında da eski haline döndürürsünüz.

1. Ctrl+M ile makro çalıştırma ve kaldırma​

Aşağıdaki kodu standart bir modüle yapıştırın. KisayolAta yordamı Ctrl+M tuşunu TutarHesapla makrosuna bağlar, KisayolKaldir yordamı ise tuşu normal haline döndürür. Hedef makronun kendisi üçüncü örnekte verilmiştir; onu da aynı modüle ekleyin.
VBA 11 satır
Option Explicit

' Ctrl+M tuşunu TutarHesapla makrosuna bağlar
Public Sub KisayolAta()
    Application.OnKey "^m", "TutarHesapla"
End Sub

' Atamayı kaldırır; Ctrl+M normal davranışına döner
Public Sub KisayolKaldir()
    Application.OnKey "^m"
End Sub
Application.OnKey
Formülünü incelemek için bir hücre seçin.
ABC
1ÜrünMiktarBirim Fiyat
2Kalem128,50
3Defter2024,00
4Dosya1513,75
Kısayol AtamaExcelDepo v1.0.0
KisayolAta makrosunu bir kez çalıştırdıktan sonra Ctrl+M tuşuna bastığınızda Excel TutarHesapla makrosunu çalıştırır. Bu örnek tuş ataması yaptığı için burada çalıştırılmaz; denemek için makroyu kendi Excel'inizde çalıştırın. Atamayı kaldırmak için KisayolKaldir makrosunu çalıştırın.

2. Tuşu devre dışı bırakma ve kitapla birlikte yönetme​

Bu kodu ThisWorkbook modülüne yapıştırın. Kitap açılınca Delete tuşu ve Ctrl+C devre dışı kalır; kitap kapanırken tuşlar eski haline döner. Böylece kullanıcı bu tuşlarla listedeki verileri yanlışlıkla silemez ya da kopyalayamaz; ancak menüden ve sağ tık menüsünden bu işlemler yine yapılabilir.
VBA 13 satır
Option Explicit

Private Sub Workbook_Open()
    ' Boş metin: tuşa basılınca hiçbir şey olmaz
    Application.OnKey "{DELETE}", ""
    Application.OnKey "^c", ""
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    ' Procedure verilmez: tuşlar normal davranışına döner
    Application.OnKey "{DELETE}"
    Application.OnKey "^c"
End Sub
Application.OnKey
Formülünü incelemek için bir hücre seçin.
ABC
1PersonelŞehirMaaş
2Ayşe YılmazAnkara28.500,00
3Mehmet Demirİzmir31.200,00
4Zeynep KayaBursa26.750,00
Personel ListesiExcelDepo v1.0.0
Kitap açıldığında Delete ve Ctrl+C tuşları işlevsiz kalır; kitap kapanırken eski haline döner. Bu örnek de tuş ataması yaptığı için çalıştırılmaz. Menüden ve sağ tık menüsünden kopyalama ya da silme yine mümkündür; yani bu yöntem tam bir koruma sağlamaz.

3. Tuşa bağlanan hedef makro​

Birinci örnekteki Ctrl+M atamasının çalıştıracağı makro budur. Kodu standart modüle yapıştırın. Makro, her satırda miktarı birim fiyatla çarpıp sonucu Tutar sütununa yazar. Burada makro doğrudan çalıştırılarak sonucu gösterilir.
VBA 14 satır
Option Explicit

' OnKey ile bir tuşa bağlanabilecek hedef makro
Public Sub TutarHesapla()
    Dim ws As Worksheet
    Dim i As Long

    Set ws = ActiveSheet

    ' 2. satırdan 5. satıra kadar Miktar x Birim Fiyat
    For i = 2 To 5
        ws.Cells(i, 4).Value = ws.Cells(i, 2).Value * ws.Cells(i, 3).Value
    Next i
End Sub
Application.OnKey
Formülünü incelemek için bir hücre seçin.
ABCD
1ÜrünMiktarBirim FiyatTutar
2Kalem128,50102,00
3Defter2024,00480,00
4Dosya1513,75206,25
5Klasör832,00256,00
Tutar HesabıExcelDepo v1.0.0
Makro çalışınca Kalem satırının tutarı 102,00, Defter satırının tutarı 480,00, Dosya satırının tutarı 206,25 ve Klasör satırının tutarı 256,00 olarak yazılır. Ctrl+M atamasını yaptıysanız aynı sonucu bu tuşla da elde edersiniz.

Kullanırken dikkat edin​

  • Atama kalıcı değildir: OnKey ataması dosyaya kaydedilmez; Excel kapanınca kaybolur. Kalıcı etki istiyorsanız atamayı Workbook_Open olayında yapın ve Workbook_BeforeClose olayında geri alın.
  • Uygulama düzeyinde etkilidir: Atama yalnızca makroyu içeren kitabı değil, Excel'de açık tüm kitapları etkiler. Devre dışı bıraktığınız bir tuş başka kitaplarda da çalışmaz; bu yüzden işiniz bitince tuşu mutlaka eski haline döndürün.
  • Boş metin ile bağımsız değişkeni atlamak aynı değildir: Procedure yerine boş metin ("") yazarsanız tuş devre dışı kalır. Bağımsız değişkeni hiç yazmazsanız tuş Excel'in varsayılan davranışına döner. Bu iki durumu karıştırmak, tuşların yanlışlıkla kilitli kalmasına yol açar.
  • Hedef yordam erişilebilir olmalı: Yordam standart modülde olmalı, bağımsız değişken almamalı ve adı doğru yazılmalıdır. Yordam bulunamazsa tuşa basıldığında hata alırsınız. Başka kitaptaki makro için kitap adını kesme işaretleri içinde yazın.
  • Makro güvenliği: Makrolar devre dışıysa atama hiç yapılmaz. Dosyayı .xlsm biçiminde kaydedin ve makrolara izin verildiğinden emin olun.
  • Yerleşik kısayolları ezerken dikkatli olun: Ctrl+C, Ctrl+V ya da Delete gibi yaygın tuşları devre dışı bırakmak kullanıcıyı şaşırtır. Mümkünse Excel'de varsayılan atamaya sahip olmayan birleşimleri (ör. Ctrl+M) seçin.
  • İlgili konular:
    • Workbook_Open: Kitap açılırken atama yapmak için kullanılan olay.
    • Workbook_BeforeClose: Kitap kapanırken atamaları geri almak için kullanılan olay.
    • Application.OnTime: Bir makroyu belirli bir zamanda çalıştırır.
    • Application.MacroOptions: Makroya kısayol tuşu ve açıklama atar.
    • Application.Run: Adı metin olarak verilen makroyu çalıştırır.
    • Geliştirici > Makrolar > Seçenekler (Developer > Macros > Options): Makroya Ctrl tabanlı kısayol atama penceresi.
Örneklerdeki makroların tamamı indirilebilir Excel dosyasındadır (.xlsm). Dosyayı açtıktan sonra makroları etkinleştirin, ardından Alt + F11 ile Visual Basic Düzenleyicisi'nde kodları inceleyebilir ve Alt + F8 ile çalıştırabilirsiniz.
Yazar
ExcelDepo
İndirme sayısı
0
Gösterim
13
İlk yayın
Güncel

Puanlar

0.00 Oylama 0 İnceleme
Geri
Üst