Özellik ikonu

InkEdit

İndirme izni yok

Genel Bakış

InkEdit (Microsoft InkEdit Control), kalem ya da dokunmatik girişle elle yazılan yazıyı tanıyıp metne çevirebilen, RichTextBox benzeri bir ActiveX denetimidir. Excel'in standart UserForm araç kutusunda yer almaz; Windows'ta Tablet PC/mürekkep bileşenleri kuruluysa Ek Denetimler (More Controls) listesinden eklenir. VBA ile çalışma sayfasına ya da UserForm'a yerleştirilip elle yazılan notların hücrelere aktarılmasında kullanılır.

InkEdit nedir ve nasıl eklenir​

InkEdit, Windows Tablet PC mürekkep (ink) altyapısının sunduğu bir denetimdir. Görünümü çok satırlı bir metin kutusuna benzer; ancak kullanıcı fareyle, kalemle ya da dokunmatik ekranla yazdığında çizgiler tanınır ve metne dönüştürülür. Klavyeyle yazılan metin de aynı kutuda tutulabilir.

Eklemek için şu adımları izleyin:
  • Çalışma sayfasına: Geliştirici > Denetimler > Ekle > Diğer Denetimler (Developer > Controls > Insert > More Controls) yolunu izleyin ve listeden InkEdit denetimini seçin.
  • UserForm'a: VBA düzenleyicisinde araç kutusuna sağ tıklayıp Ek Denetimler (Additional Controls) seçeneğini açın ve InkEdit kutusunu işaretleyin.
  • Bulunmuyorsa: bileşen bilgisayarda kayıtlı değildir. Bu durumda denetim listede görünmez ve kodda hata alırsınız.
Denetim yalnızca Windows için geçerlidir; Excel'in Mac sürümünde kullanılamaz. Excel'in kendi Çizim (Draw) sekmesindeki mürekkep araçları ise ayrı bir özelliktir ve InkEdit ile ilgisi yoktur.

Denetime koddan erişmek için çoğu zaman geç bağlama kullanmak güvenlidir; böylece denetim kurulu olmayan bilgisayarda proje derlenirken hata vermez:
VBA 4 satır
Dim ink As Object
Set ink = Worksheets("Sayfa1").OLEObjects("InkEdit1").Object
ink.InkMode = 1      ' mürekkep girişi açık
MsgBox ink.Text

Önemli özellikler​

InkEdit'in özellikleri metin kutusu özellikleriyle mürekkebe özgü özelliklerden oluşur:
  • Text: kutudaki düz metni okur ya da yazar. Elle yazılıp tanınmış metin de buradan alınır.
  • TextRTF: metni biçim bilgisiyle (RTF) birlikte verir.
  • SelText, SelStart, SelLength: seçili metni, seçimin başlangıç konumunu ve uzunluğunu belirler.
  • InkMode: mürekkep girişinin durumunu belirler: 0 kapalı (IEM_Disabled), 1 mürekkep açık (IEM_Ink), 2 mürekkep ve hareket (jest) tanıma açık (IEM_InkAndGesture).
  • InkInsertMode: tanınan yazının nasıl ekleneceğini belirler: 0 metin olarak (IEM_InsertText), 1 mürekkep olarak (IEM_InsertInk).
  • Status: denetimin durumunu verir: 0 boşta (IES_Idle), 1 yazı toplanıyor (IES_Collecting), 2 tanıma sürüyor (IES_Recognizing).
  • UseMouseForInput: True ise fare de mürekkep girişi olarak kabul edilir; test için kullanışlıdır.
  • Recognizer ve Factoid: kullanılacak el yazısı tanıyıcıyı ve beklenen girdi türünü (ör. sayı, tarih) belirler. Bu, tanıma başarısını artırır.
  • MultiLine, Locked, ScrollBars, Enabled: standart metin kutusu davranışlarını denetler.
Özelliklerin ve sabitlerin tam listesini VBA düzenleyicisindeki Özellikler penceresinden ve Nesne Tarayıcısı (Object Browser) üzerinden doğrulayın; sürüme göre küçük farklar olabilir.

Önemli yöntemler ve olaylar​

Yöntemler ve olaylar, mürekkep girişini izleyip tanıma sonucunu yakalamak için kullanılır:
  • Refresh: denetimi yeniden çizer.
  • SetGestureStatus ve GetGestureStatus: hangi jestlerin (ör. silme, boşluk) tanınacağını ayarlar ya da sorgular.
  • LoadFile ve SaveFile: içeriği dosyadan yükler ya da dosyaya kaydeder.
  • Stroke: kullanıcı bir çizgi (vuruş) çizdiğinde oluşur.
  • Gesture: bir jest algılandığında oluşur.
  • Recognition: yazı tanınıp metne çevrildiğinde oluşur; tanınan metni hücreye aktarmak için en uygun yerdir.
  • Change ve SelChange: metin ya da seçim değiştiğinde oluşur.
Olay yordamı, denetimi çalışma sayfasına eklediyseniz o sayfanın kod modülüne, UserForm'a eklediyseniz UserForm modülüne yazılır. Yordamın bağımsız değişkenlerini elle yazmayın; kod penceresinin üstündeki nesne ve olay açılır listelerinden seçerek Excel'in oluşturduğu başlığı kullanın.

1. Sabitlerin sayısal değerlerini sayfaya yazma​

Geç bağlamada InkEdit sabitleri tanınmaz; bu yüzden kodda sayısal değerlerini kullanırsınız. Aşağıdaki makro, sabitleri yerel Const olarak tanımlar ve değerlerini C sütununa yazar. Kodu standart bir modüle yapıştırın ve SabitleriYaz makrosunu çalıştırın.
VBA 27 satır
Option Explicit

Sub SabitleriYaz()
    ' InkMode sabitleri
    Const IEM_Disabled As Long = 0
    Const IEM_Ink As Long = 1
    Const IEM_InkAndGesture As Long = 2
    ' InkInsertMode sabitleri
    Const IEM_InsertText As Long = 0
    Const IEM_InsertInk As Long = 1
    ' Status sabitleri
    Const IES_Idle As Long = 0
    Const IES_Collecting As Long = 1
    Const IES_Recognizing As Long = 2

    Dim ws As Worksheet
    Set ws = ActiveSheet

    ws.Range("C2").Value = IEM_Disabled
    ws.Range("C3").Value = IEM_Ink
    ws.Range("C4").Value = IEM_InkAndGesture
    ws.Range("C5").Value = IEM_InsertText
    ws.Range("C6").Value = IEM_InsertInk
    ws.Range("C7").Value = IES_Idle
    ws.Range("C8").Value = IES_Collecting
    ws.Range("C9").Value = IES_Recognizing
End Sub
InkEdit
Formülünü incelemek için bir hücre seçin.
ABC
1SabitÖzellikDeğer
2IEM_DisabledInkMode0
3IEM_InkInkMode1
4IEM_InkAndGestureInkMode2
5IEM_InsertTextInkInsertMode0
6IEM_InsertInkInkInsertMode1
7IES_IdleStatus0
8IES_CollectingStatus1
9IES_RecognizingStatus2
SabitlerExcelDepo v1.0.0
Makro çalışınca C sütununa sabitlerin sayısal değerleri yazılır. Örneğin IEM_Ink için 1, IEM_InkAndGesture için 2, IEM_InsertInk için 1 ve IES_Recognizing için 2 değeri görünür. Bu sayıları denetim kurulu olmayan bir bilgisayarda da InkMode ya da InkInsertMode özelliğine doğrudan atayabilirsiniz.

2. Tanınan el yazısı metnini temizleme​

El yazısı tanıma sonuçları çoğu zaman fazladan boşluk ve tutarsız büyük/küçük harf içerir. A sütunundaki tanınmış metinleri, InkEdit'in Text özelliğinden gelmiş gibi düşünün. Makro, fazla boşlukları siler ve her sözcüğün ilk harfini büyütür. Kodu standart bir modüle yapıştırıp MetniTemizle makrosunu çalıştırın.
VBA 18 satır
Option Explicit

Sub MetniTemizle()
    Dim ws As Worksheet
    Dim i As Long
    Dim sonSatir As Long
    Dim metin As String

    Set ws = ActiveSheet
    sonSatir = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row

    For i = 2 To sonSatir
        ' Fazla boşlukları temizle
        metin = Application.WorksheetFunction.Trim(ws.Cells(i, 1).Value)
        ' Her sözcüğün ilk harfini büyüt
        ws.Cells(i, 2).Value = StrConv(metin, vbProperCase)
    Next i
End Sub
InkEdit
Formülünü incelemek için bir hücre seçin.
AB
1Tanınan MetinTemizlenmiş Metin
2 mehmet kaya Mehmet Kaya
3ayşe çelikAyşe Çelik
4fatma öztürk Fatma Öztürk
5 can aydınCan Aydın
6zeynep arslanZeynep Arslan
El YazısıExcelDepo v1.0.0
Makro her satırdaki metni B sütununa temizlenmiş biçimde yazar. İlk satırın sonucu Mehmet Kaya, ikinci satırın sonucu Ayşe Çelik olur. Gerçek projede aynı işlemi, InkEdit'ten gelen Text değerine uygulayıp sonucu hücreye yazarsınız.

3. InkEdit içeriğini hücreye aktarma​

Çalışma sayfasına InkEdit1 adlı bir InkEdit denetimi eklediğinizi varsayın. Kullanıcı kutuya elle not yazar; makro bu notu B2 hücresine aktarır. Denetim yoksa makro hata vermeden uyarı gösterir. Kodu standart bir modüle yapıştırın ve denetimin bulunduğu sayfa etkinken ElYazisiniAktar makrosunu çalıştırın.
VBA 18 satır
Option Explicit

Sub ElYazisiniAktar()
    Dim ink As Object

    ' Denetim yoksa hatayı yoksay ve kontrol et
    On Error Resume Next
    Set ink = ActiveSheet.OLEObjects("InkEdit1").Object
    On Error GoTo 0

    If ink Is Nothing Then
        MsgBox "Bu sayfada InkEdit1 adlı denetim bulunamadı.", vbExclamation
        Exit Sub
    End If

    ' Tanınan metni hücreye yaz
    ActiveSheet.Range("B2").Value = Trim(ink.Text)
End Sub
InkEdit
Formülünü incelemek için bir hücre seçin.
AB
1PersonelNot Metni
2Selin Yıldız
Not FormuExcelDepo v1.0.0
Bu örnek, denetim ve MsgBox gerektirdiği için burada çalıştırılmaz. Denetim sayfada varsa kutudaki metin B2 hücresine yazılır; yoksa bir uyarı penceresi görünür. Çalışma sayfası denetimleri sayfa çalışma zamanında Object özelliğiyle kullanılır; bu nedenle ink değişkeni Object olarak tanımlanmıştır.

Kullanırken dikkat edin​

  • Denetim her bilgisayarda yoktur: InkEdit, Excel ile gelen standart bir denetim değildir. Bileşen kurulu olmayan bir bilgisayarda dosya açıldığında denetim görünmeyebilir ya da hata alabilirsiniz. Dosyayı başkalarıyla paylaşacaksanız bunu önceden denetleyin.
  • Geç bağlama kullanın: Denetimi Object türünde bir değişkenle kullanmak, başvuru eksik olduğunda derleme hatası almanızı önler. Böyle durumlarda sabit adları tanınmaz; sayısal değerleri kullanın ve gerekirse Const ile adlandırın.
  • Yalnızca Windows: Denetim Windows'un mürekkep altyapısına dayanır. Excel'in Mac sürümünde ya da mürekkep bileşenleri kaldırılmış sistemlerde çalışmaz. Ayrıca 32 bit ve 64 bit Office sürümlerinde kayıtlı olan denetimler farklı olabilir.
  • Tanıma başarısı: El yazısı tanıma, kullanılan tanıyıcının dil ayarına bağlıdır. Türkçe karakterlerin (ç, ğ, ı, ö, ş, ü) doğru tanınması için Türkçe tanıyıcının kurulu olduğundan emin olun. Sonucu hücreye yazmadan önce mutlaka gözle kontrol edin ya da Trim ile temizleyin.
  • Olay yordamlarını açılır listeden oluşturun: Stroke, Gesture ve Recognition gibi olayların bağımsız değişkenleri vardır. Başlığı elle yazmak yerine kod penceresinin açılır listelerinden seçin; böylece bağımsız değişkenler doğru gelir.
  • İlgili konular:
    • TextBox: standart UserForm metin kutusu denetimi.
    • Ek Denetimler: araç kutusuna ActiveX denetimi eklemek için kullanılır.
    • OLEObjects: çalışma sayfasındaki ActiveX denetimlerine erişim koleksiyonu.
    • UserForm: denetimleri barındıran kullanıcı formu.
    • Trim ve StrConv: tanınan metni temizlemek için kullanılan VBA işlevleri.
    • Geliştirici sekmesi: denetim ekleme ve tasarım modu işlemleri için gereklidir.
    • KIRP: çalışma sayfasında fazla boşlukları silen işlev.
Ö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
9
İlk yayın
Güncel

Puanlar

0.00 Oylama 0 İnceleme
Geri
Üst