Makro ile Caps Lock kontrolu

Katılım
17 Nisan 2005
Mesajlar
122
Excel Vers. ve Dili
Excel 2010 TR | Excel 2013 TR
Firmalardan gelen fatura günlük bilgilerinin girildiği ve ay sonunda icmal alınabilecek bir makro yazıyorum. İcmalin düzenli olması için son kullanıcının hep büyük harfle bilgi girişi yapmasını istiyorum. makro çalıştığında kullanıcıyı "caps lock" tuşunu açık konuma getirmesi için uyarmayı düşünüyordum ama bu pek sağlıklı değil kontrolü son kullanıcıya vermiş olacağım. bu sebeple caps lock tuşunu kontrol edecek bir makro düşündüm ama elimdeki kaynaklarda yardımcı olabilecek bir bilgi bulamadım, internetteki aramalarım da sonuçsuz kaldı. :?

Caps Lock tuşunu -makro veya başka bir şekilde- işi son kullanıcıya bırakmadan kontrol etme yöntemi konusunda yardımcı olursanız çok sevinirim.
 
X

xxrt

Misafir
Aşağıdakileri boş bir modüle kaydedin.Dosyanızı açtığınızda Küçük Harf Girmek mümkün olmıyacaktır.
Kaynak:Sayın Raider
Kod:
Declare Function SetKeyboardState Lib "user32" (BoardValue As KeyboardBytes) As Long
Type KeyboardBytes
MyValue(0 To 255) As Byte
End Type
Dim BoardValue As KeyboardBytes

Sub Auto_Open()
BoardValue.MyValue(&H14) = 1
BoardValue.MyValue(&H90) = 1
SetKeyboardState BoardValue
Application.OnKey "{CAPSLOCK}", "CapsOff"
Application.OnKey "{NUMLOCK}", "NumLockOff"
End Sub

Sub CapsOff()
BoardValue.MyValue(&H14) = 1
SetKeyboardState BoardValue
End Sub

Sub NumLockOff()
BoardValue.MyValue(&H90) = 1
SetKeyboardState BoardValue
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
Birde aşağıdaki gibi deneyebilirsiniz,bu kodda küçük harfle yazılsa bile otomatik olarak büyük harfe çevrilmektedir. Aşağıdaki kod sadece A1 hücresinde işlem yapmaktadır. Büyük harf olmasını istediğiniz tüm hücreleri kod içinde tanımlayabilirsiniz. Kodu sayfanın kod sayfasına kopyalayın.

[vb:1:51e14073de]Private Sub Worksheet_SelectionChange(ByVal Target As Range)
[a1] = Replace([a1], "i", "İ")
[a1] = Replace([a1], "ı", "I")
[a1] = StrConv([a1], vbUpperCase)
End Sub
[/vb:1:51e14073de]
 
Katılım
17 Nisan 2005
Mesajlar
122
Excel Vers. ve Dili
Excel 2010 TR | Excel 2013 TR
teşekkür ederim sn xxrt ve sn. leventm. iki kodu da denedim,

Sn xxrt nin kodunu "thisworkbook" kod sayfasına girdim ve userformlar dahil her alanda etkili oldu fakat gördüğüm kadarı ile kod CapsLoack kapalı olduğunda(küçük harf modunda) iken benim istediğim şekilde çalışıyor kullanıcının bilgisayarında CapsLock açık ise (büyük harf modu) bu sefer kod çalıştığında tüm userformlar ve sayfalarda küçük harf yazmaya zorluyor.

Bu kodu CapsLock açık iken (büyük harf modunda iken) büyük harf yazmaya engel olmayacak hale getirmek mümkün müdür?

Sn leventm'nin kodu da oldukça pratik ama tek tek hücreler için tanımlamak biraz uğraştırıyor. aralık seçme veya tüm sayfaya uygulama için ne yapmalıyım?
[a1]= ... kodunu kafadan sallayıp [a1:c11] =... gibi değiştirdim çalışmasına ihtimal vermediğim halde, doğal olarak çalışmadıda. formülü aralık veya sayfa bazında çalıştırmak için nasıl değiştirmeliyim.
 

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
Sn xxrt'nin verdiği kodu normal module sayfasına kopyalayarak deneyin.
 

Hüseyin

Administrator
Yönetici
Admin
Katılım
2 Haziran 2004
Mesajlar
3,541
Excel Vers. ve Dili
Excel 2010 - Türkçe
HADDİM OLMAYARAK BENDE BİR Ã?RNEK HAZIRLADIM.
Sayın spilavci,
Rica ederiz, böyle farklı çalışma ve çözümlerin olması büyük mutluluk.
Lütfen bu tür konularda çekinmeyin.

Teşekürler.
 
X

xxrt

Misafir
entropy_tr' Alıntı:
hep büyük harfle bilgi girişi yapmasını istiyorum.
Verdiğim kodları Sayın Leventm'nin dediği gibi Boş bir modüle kopyalıyacaksınız.Ve hiç bir işlem yapmanıza gerek kalmadan o kendisi Büyük harf yazmanızı sağlıyacak.
Ancak Shift Tuşunu kullandığınızda bu işe yaramıyacaktır.Bu nedenle Otomatik düzeltmeler ayarlarında kendinize göre değişiklik yapmanız gerek.
Ekteki dosyayı inceleyiniz.

spilavci,
HADDİM OLMAYARAK BENDE BİR Ã?RNEK HAZIRLADIM.
Estafurullah Bu forumda herkes fikrini ve örneğini açıklayabilir bundan da hiç çekinmeyin.

Çalışmanızdaki =BÜYÜKHARF(C5) formüllerini normal olarak kullanmak mümkün.Fakat Sayın
entropy_tr' Alıntı:
hep büyük harfle bilgi girişi yapmasını istiyorum.
O nedenle Caps Lock olayını iptal etmemiz gerekti..Ve girilen değerler muhtemelen Çalışma kitabının çeşitli yerlerinde olacağı varsayılarak kökten çözüm olarak yapılması gerek..İlginize teşekkürler.
 
Katılım
17 Nisan 2005
Mesajlar
122
Excel Vers. ve Dili
Excel 2010 TR | Excel 2013 TR
Çok teşekkürler arkadaşlar,

Ben Caps Lock ile uğraşmaktan sıkıldım bendeki Office'den mi anlamadım bir türlü tüm sayfaya etkili olmadı. Bu yüzden aşağıdaki ufak makroyu yazdım. işi userformda işin kaynağında bitirdim ayrıca sayfada yapılabilecek manuel düzeltmeler için gönderdiğiniz kodlarıda yerleştirdim. Umarım işyerindeki excellerde doğru çalışır.

Sn. spilavcının çözümü ile sn. xxrt'nin 2. yöntemini de inceledim. Hepinize tekrar çok teşekkür ederim.

Ben şu kodu kullandım oldukça basit
Kod:
Private Sub txtOptik_Change()
Dim dg As String

dg = txtOptik.Text

If Right(dg, 1) = "i" Then
    txtOptik.Text = Left(dg, (Len(dg) - 1)) & "İ"
    Exit Sub
End If

If Right(dg, 1) = "ı" Then
    txtOptik.Text = Left(dg, (Len(dg) - 1)) & "I"
    Exit Sub
End If

txtOptik.Text = Format(txtOptik.Text, ">")

End Sub
 
X

xxrt

Misafir
entropy_tr' Alıntı:
Firmalardan gelen fatura günlük bilgilerinin girildiği
Sayın entropy_tr,Siz baştan TextBoxlarda büyük harf deseydiniz okey.Ama çalışma sayfası için bunları düşünmüştük.
Neyse,
Ben şu kodu kullandım oldukça basit
Bizim için önemli olan sizin sorununuzun çözülmüş olması.Bu arada foruma bu örneği verdiğiniz için teşekkürler. :uyku:
 
Katılım
17 Nisan 2005
Mesajlar
122
Excel Vers. ve Dili
Excel 2010 TR | Excel 2013 TR
Doğru diyorsunuz, eksik bilgi ile yanlış yönlendirme yapmışım kusura bakmayın. İlginiz için teşekkür ederim.
 
Üst