S

Çözüldü Tek bir dosyada çalışacak capslock tuşu

SilinenUye8231

Normal Üye
Excel Versiyonu
Excel 2016
Excel Sürümü
64 Bit
Excel Dili
Türkçe
Merhaba, hayırlı geceler.

Sadece tek bir excel dosyası için Capslock tuşunu açsan da kapatsan da sürekli açık olsun, böyle bir kod mevcut mu?

Yardımcı olabilir misiniz?
 
Sayın @SilinenUye8231 .

Evet birçok alternatif yöntem kullanılabilir ama muhtemel sorunlar;
-- FORMÜLLÜ alanlardaki formül sonuçları,
-- birleştirilmiş hücreler,
-- kopyala yapıştır yöntemiyle veri yazılan alanlar (tekli/çoklu)
-- sayfa olaylarında userformlardaki gibi KeyPress/KeyDown/KeyUp kodlarının kullanılamiyor olması nedeniyle yazarken değil, verinin yazılıp hücreden çıkıldıktan sonra kontrol yapılabiliyor olması.

Bence formüllü bir alandan söz etmiyorsak, yazarken büyükharf yazdırmaya zorlamak yerine, belge kaydedilirken,
alanın taranıp tüm verilerin büyük/küçük harf kontrolünden geçirilip, dönüştürerek kaydettirmektir diye düşünüyorum.

.
 
Sayın Ömer Bey, excel dosyamda 5 sayfam var, her sayfada A:H arasındaki verilerin büyükharfe çevirmesi uzun sürmez mi?

Dosya kapanırken bu işlem için hızlı bir şekilde çalışacak kod olursa daha iyi olur.
 
Sayın Ömer Bey, aşağıdaki gibi kodlar mevcut, bi nebze işime yarıyor ama capslock tuşuna bastığımda açıksa kapatıyor, kapalıysa açıyor.

Private Sub Workbook_Open()
CreateObject("Wscript.Shell").SendKeys "{CAPSLOCK}"
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
CreateObject("Wscript.Shell").SendKeys "{CAPSLOCK}"
End Sub
 
Daha evvel de yazdım, birçok kod üretilebilir.
Verdiğiniz kod sadece capslock tuşunu açmaya kapatmaya yarıyor.
Daha doğrusu açıkken kapalı, kapalıyken açık hale getiriyor. Çünkü yöntem Sendkey yani sizin adınıza kod bu tuşa basıyor sadece.

Siz capslock tuşunu aktif etseniz bile belgeyi kullanan tuşa tekrar basarak yine küçük harf yazabilir.
Bence kapanışta, yazılan verileri büyük harfe dönüştürmek en pratik olanı. Hız mesele olmaz demiştim.
 
Aşağıdaki kodları, VBA kısmında ThisWorkbook (BuÇalışmaKitabı) bölümüne uygulayıp bir deneyin bakalım.
Belgenizde formüller olduğundan dizi yöntemi yerine, klasik döngü kullanıldı.
Formüller (A sütunları hariç) yok olsa da olur derseniz, dizi yöntemi kullanmak için kodda revizyon gerekir.

Belgede, çalışılırken veya kapatılırken KAYDETme işlemi yapıldığında kod devreye girer ve işlemi yapar.

VBA:
Görüntülemek için giriş yapmanız gerekmektedir.
(23 satır)
 
Sayın Ömer Bey, bişey öğrenmek istiyorum affınıza sığınarak.

Aşağıdaki kodda Capslock tuşu kapalıysa açsın, açıksa zaten açık nasıl yazılabilirdi?
Öğrenmek amaçlı soruyorum.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
CreateObject("Wscript.Shell").SendKeys "{CAPSLOCK}"
End Sub
 
İlk kod blokunu ThisWorkbook bölümüne, ikinci kod blokunu ise boş bir MODULe yapıştırın.
Her hücre seçimi değişiminde CAPSLOCK ve NUMLOCK tuşlarının durumu kontrol edilir ve
bu tuşlar AÇIK hale gelir.
Sadece CAPSLOCK kontrolü yapılıp, NUMLOCK kontrol edilmeyecekse;
ikinci kod blokunun sonundaki Switch VK_NUM, 1 satırının sol başına TEK TIRNAK işareti ekleyerek
o kod satırını etkisiz hale getirin.

İlgili kodda zaten 2 satır var, satırların sonundaki SAYI,
0 yapılırsa o tuş kapalı, 1 yapılırsa o tuş açık hale gelir.

NOT: Kendisi de alıntılamiş mıdır bilemiyorum ama ben kaynağımı yazayım. Kodlar Sayın Ali ÖZ 'den alıntıdır .

VBA:
Görüntülemek için giriş yapmanız gerekmektedir.
(3 satır)
VBA:
Görüntülemek için giriş yapmanız gerekmektedir.
(60 satır)
 
Sayın Ömer Bey, dediğiniz gibi kodları sayfanın ilgili yerlerine yapıştırdım, hücreye tıkladığımda
aşağıdaki resimdeki gibi hata verdi.

Ekran Alıntısı.webp
 
Moderatörün son düzenlenenleri:
Bilgisayara geçtiğimde bakabilirim.
Cep telefonundan ancak şunu diyebilirim.

Üst kısımdaki .... Declare Function.... bölümlerini aşağıdaki gibi düzenleyiniz.

#If VBA7 Then
.....Declare PtrSafe Function ...
#Else
.....Declare Function ...
#End If

.
 
Üst