• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

sayfada hücreye tıklayarak değerini artırma

  • Konbuyu başlatan Konbuyu başlatan cems
  • Başlangıç tarihi Başlangıç tarihi

cems

Altın Üye
Katılım
2 Eylül 2005
Mesajlar
2,581
Excel Vers. ve Dili
office 2010 tr 32bit
Bir excel sayfasında ;

Başlangıçta her birinin değeri sıfır olan

a1..........c1..............f1


a7..........c7..............f7

hücrelerinde bulunan değerlerin herbirini , diğerlerinden bağımsız mesela ;

a) a1 hücresini tek veya çift tıklayarak değerini 1 artırıp
b) değer arttıktan sonra kendiliğinden c1 hücresini aktive etmesi ve tıklanmayı beklemesini
( aynı işlemi c1 e tıklayınca f1 ve takip ederek a7, c7 , f7 ........ için tıklanmayı bekleyecek ve tıklandığında sayı artırıp sonraki hücreye zıplayacak şekilde ve tıklanan hücrenin sadece kendisinde sayı eklemek amaçlı )

Nasıl yapabilirim ?
 
Selamlar,

Bu işlemi yapmak istediğiniz sayfanın kod bölümüne aşağıdaki kodu uygulayıp denermisiniz.

A-C-F sütunlarında hücrelere çift tıklama yaptığınızda kod çalışacaktır.

Kod:
Option Explicit
 
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    On Error GoTo Son
    If Intersect(Target, [A:A,C:C,F:F]) Is Nothing Then Exit Sub
    Cancel = True
    Target = Target + 1
    If Target.Column = 1 Then Target.Offset(0, 2).Select
    If Target.Column = 3 Then Target.Offset(0, 3).Select
    If Target.Column = 6 Then Target.Offset(1, -5).Select
    Exit Sub
Son:
End Sub
 
Hemen kontrol ediyorum ...
 
Sayın Korhan Ayhan ,

Vermiş olduğunuz kodlar mükemmel çalıştı , hücreye tıklayarak basit bir şekilde ( bir anketin doğru cevaplarını saymak ve yığını bulmak amaçlı ) cevap saymak sayenizde çok kolaylaştı. Tabi asıl çalışma sağa doğru sütunlar ve alta doğru da satırlar olarak devam ediyor , anlayarak uyarlamaya çalışıyorum .

Kodlarınızda takıldığım ve ne demek olduğunu/iş yaptığını şimdilik anlayamadığım kısım olarak;

If Target.Column = 6 Then Target.Offset(1, -5).Select

satırında -5 yani "eksi " 5 olmasının anlamı nedir ?

Derin teşekkür ve saygımla ;
 
Benimde bir fikrim var konu ile ilgili belki işe yarar. İşlem yapılacak hücrelerin kilitleriniaçıp daha sonra sayfayı koruduğumuzda bu hücreler arasında TAB tuşu ile dolaşabiliriz. Aşağıdaki kodları da bir modüle kopyalayıp dosyayı kaydedip tekrar açarsak, ilgili hücrelerde yukarı oka basıldığında değer 1 artacaktır. üzerinde işlem yapılan hücreler sayı içermeli veya boş olmalı
Kod:
Sub auto_open()
Application.OnKey "{UP}", "goup"
End Sub
Sub goup()
ActiveCell.Value = ActiveCell.Value + 1
End Sub
 
Bu yöntem de sanırım iyi bir gidiş ve sabah ilk vakitte sağlam kafayla tekrar deneyeceğim , şu an sabahın 03 suları , kodlar çalıştı ama kafa error verdi ...

Bir dezavantajı var ki ; kullanıcı iki elini de klavyede tutmak zorunda kalacak . Oysa anket adaylarının verdiği kağıdı da izlemesi gerekli ; belki eliyle yeri kendine işaretleyerek ...

Deneterek kullanılırlığını da sabahleyin anlamak mümkün olacak . ..

Bir başka fikir de benden ama çalışır mı bu fikir şu an bir çıkarım yapamıyorum ..

A4 sayfasının bir kısmını alan cevap bolgesini scrollarea ile çoklu alanda kısıtlayıp enterladıkca içinde olduğu bölgede aktif hücreyi dolaştırtmak . Sonra diğerine geçerek devam etmek ...
 
5.numaralı mesajdaki ayarlamaların üzerine bu kodlarda kullanılabilir. Bu durumda her tıklamada bir sonraki hücreye atlayacaktır. Ancak çift tıklama esnasında hücrenin üst kenarlığına veya alt kenarlığına çift tıklandığında o istikametteki son hücreye gider, dikkat etmek lazım.
Kod:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
  Target.Value = Target.Value + 1
  send_key
End Sub
Sub send_key()
  Application.SendKeys "{TAB}"
End Sub
 
merhaba

nasıl bir kod kullanacaksanız kullanın baskı hatalarına karşı geri al komutu veya son girilen değeri çıkaracak bişey ilave etmelisiniz.
ya da değişikliği onaylayacak bir msgbox olabilir.

amcam kazara 2 kez tıklarsa ne olacak?
 
Sn.uzmanamele güzel bir noktayı ifade etmiş. Gerçi her çift tıklamadan sonra bir sonraki hücreye gidiyor ama yine de bir düzeltme tuşu koymak da yarar. Ben aşağıdaki şekilde birşey düşündüm. Sağ tıklayınca değeri bir azaltıyor.
Kod:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Target.Value = Target.Value + 1
    send_key
End Sub
Sub send_key()
    Application.SendKeys "{TAB}"
End Sub
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
    Target.Value = Target.Value - 1
    Application.SendKeys "{ESC}"
End Sub
 
Kodlarınızda takıldığım ve ne demek olduğunu/iş yaptığını şimdilik anlayamadığım kısım olarak;

If Target.Column = 6 Then Target.Offset(1, -5).Select

satırında -5 yani "eksi " 5 olmasının anlamı nedir ?


Merhaba
Türkçeleştirerek anlatmaya çalışayım.

"Target" hedef demek. Bu kodda da hedef demek içinde bulunduğunuz hücre demek.

target.Offset()

Bunu şöyle anlatayım: hedef hücrenin Offsetini yani hücreyi adres kılıp hücrenin etrafı (sağı-solu-yukarısı-aşağısı) belirlemek. Parantez içindekilere gelelim...:

Offset(0,0)
Renkli olarak açıklamaya çalışayım. Offsetten sonraki parantez içindeki (mavi olarak gösterdiğim yerdeki) rakamlar hücrenin aşağısını ve yukarsını, (kırmızı olarak gösterdiğim yerdeki) rakamlar hücrenin sağını ve solunu,

artı ve eksilere gelince ; sağ-sol veya yukarı-aşağı yı belirtir.

Eger başında eksi (-) işareti yoksa Mavi alanda aşağıya kırmızı alanda sağa, (-) işareti varsa mavi alanda yukarı, kırmızı alanda sola demektir.

Örneği inceleyelim.

Target.Offset(1, -5).Select

burada da hücrenin 1 aşağısı ve 5 soluna git ve seç.

Umarım anlatabilmişimdir...
 
Selamlar,

Sn. cems,

If Target.Column = 6 Then Target.Offset(1, -5).Select bu satırın ne anlama geldiğini sormuşsunuz. Eğer çift tıklama yaptığınız hücre F sütununda ise siz aktif hücrenin bir alt satıra ve A sütununa geçmesini istemişsiniz. -5 ifadesi ile A sütununa ulaşıyoruz.

F sütunu 6. sütundur.
A sütunu 1. sütundur.

Aradaki fark 5 tir. Sola doğru hücreyi seçmemiz gerektiğinden -5 olarak kullanılmıştır.
 
Değerli dostlar , üstadlarımız ;
ancak şu anda oturup devam edebilme şansım oldu ve tüm fikirleri okudum , işlevlerin mantığını ve hakikaten 2 kere tıklamanın getireceği riskleri , uyarınızla yakaladım ve geri alma hakkında birşeyler düşünüyorum.
Bu arada uyarladığım tabloda , kodun kendisinden kaynaklanan bir sorun yaşıyorum. Her ne kadar excel hücreleri sağa doğru hala mevcut ise de 256 karakteri aştınız gibi bir engelleme yapıp tüm kodlamayı devre dışı bırakıyor ve tıklama normal aktive etmeye dönüşüyor.
Örneği temizleyerek buraya ekledim . Kod dize sayısını aştım onu anladım ama nasıl dizeyi bölerek devam edebilirim ? Sorun tam da sağdaki son iki kolonda ortaya çıktı ve beni de sabahlattı.
Yan duruşta olan sayfayı ( üsttekileri sola soldakileri üste alarak ) dik duruma da getirebilirim ama bu üç senedir yapılan anketin çöpe gitmesi ya da baştan yaratma ve işaretleme anlamına gelecek . Zira son durum kopyala yapıştır ile başka bir tabloya alınıyor , o da kendi hesaplarını ( bunu da katarak ) yapıyor.

Yani , örnekteki duruşta problemi aşar ve üstüne de yukarıdaki bilgi ve uyarılarınızla ilgili eklemeler yapabilirsem , derin bir ( elde işleme ) problemini personelden uzaklaştırmış olacağım .
 

Ekli dosyalar

  • Çift clickle say.xls
    Çift clickle say.xls
    43 KB · Görüntüleme: 21
  • identifier too long.jpg
    identifier too long.jpg
    98.3 KB · Görüntüleme: 10
Son düzenleme:
Sayın Janveljan,
Sizin de çok değerli fikirlerinizi şu anda denemeye çalışıyorum .

Biçimin değişmemesi , ( mecburen üst bilgileri sola sol bilgileri üste almadan bu şekliyle yapabilirsek ) inanılmaz bir mesai tasarrufu oluşacak . Dahası , gözüm ağrıdı yanlış algıladım yoruldum hataları oluşmadan [(1grup = 30 kişi )* (1saat*8grup)]*4 aşama = denklemindeki anketi hızla bitirmiş olacaklar.
Kareye çentik atarak saymak gibi bir eski usul kullanılıyormuş . Tabi anketin sağlığı şüpheli bu durumda.
 
Selamlar,

İlgili sayfadaki kodu aşağıdaki şekilde değiştirip kullanabilirsiniz. Ayrıca giriş yapılmaması gereken hücreleride korumaya alıp sayfa koruması yöntemini kullanarak giriş yapılmasını engelleyebilirsiniz.

Not: Son eklediğiniz dosyaya göre kırmızı renkle belirttiğim kod bloğunun bir hükmü kalmamış görünüyor.

Kod:
Option Explicit
 
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    On Error GoTo Son
    If Intersect(Target, [I11:AU29]) Is Nothing Then Exit Sub
    If Target.Column <> 13 And Target.Column <> 18 And Target.Column <> 23 And _
    Target.Column <> 28 And Target.Column <> 33 And Target.Column <> 38 And Target.Column <> 43 Then
    Cancel = True
    Target = Target + 1
[COLOR=red]    If Target.Column = 1 Then Target.Offset(0, 2).Select[/COLOR]
[COLOR=red]    If Target.Column = 3 Then Target.Offset(0, 3).Select[/COLOR]
[COLOR=red]    If Target.Column = 6 Then Target.Offset(1, -5).Select[/COLOR]
    End If
    Exit Sub
Son:
End Sub
 
Sayın Korhan Ayhan ;

Yenilediğiniz kodları denedim , tam gereken şekilde çalıştı , sonsuz teşekkur ederim .
Çok onemli bir kısmı sayenizde aşmayı başardım .
Şimdi konuda , değerli arkadaşların verdiği fikirleri de yerleştirmeye ve asla uygun biçimi vermeye çalışıyorum .

Harikasınız:) tekrar size ve diğer yardım elini uzatan dostlara tekrar teşekkür ederim.Artık çevresel işlev , eksiye alma ve sayfa dışına çıkmayı engelleme üzerinde duracağım.
 
Sayın Korhan Ayhan ;

Yenilediğiniz kodları denedim , tam gereken şekilde çalıştı , sonsuz teşekkur ederim .
Çok onemli bir kısmı sayenizde aşmayı başardım .
Şimdi konuda , değerli arkadaşların verdiği fikirleri de yerleştirmeye ve asla uygun biçimi vermeye çalışıyorum .

Harikasınız:) tekrar size ve diğer yardım elini uzatan dostlara tekrar teşekkür ederim.Artık çevresel işlev , eksiye alma ve sayfa dışına çıkmayı engelleme üzerinde duracağım.

=Not: Son eklediğiniz dosyaya göre kırmızı renkle belirttiğim kod bloğunun bir hükmü kalmamış görünüyor..

Doğru , sıçrama bu durumda koruyan bir yöntem olmaktan uzaklaştı , bu kısmı çıkardım ve Sayın Janveljan'ın geri alma kodlarını yerleştiriyorum.

=Ayrıca giriş yapılmaması gereken hücreleride korumaya alıp sayfa koruması yöntemini kullanarak giriş yapılmasını engelleyebilirsiniz.

Sayfa korumayı kullandım , hücrelerden kullanılacakların kilidini açarak... Çoklu olarak scrollarea da ayrıca deniyorum , kullanıcının hataya sürüklenmeyeceği hangisi olur deneyerek görmeye çalışacağım.
 
Son düzenleme:
Galiba , ekrana ve kağıda bakmalar arasında hangi modelde olursa olsun sayfalar ve tıklamalar devam ettikçe son tıklanan ve sayısı değişen karenin hangisi olduğu ; yine de karışacak.

Son tıklanan + sayısı değişen kare için , o karede renk değiştirme buna kesine yakın bir çözüm olabilirse , tıklama+sayı artması durumunda (işi bitmiş önceki karenin rengini sıfırlayıp) yeni kareye renk nasıl verebilirim ?
 
----------
kodların son hali şu şekildedir , Sayın Korhan Ayhan'ın verdiği ( ilk seri ) kodlar hücrede çift tıklandığında sayısal olarak 1 ekliyor , Sayın Janveljan'ın verdiği ( ikinci seri ) kodlar ise mouse ile sağ tıklayınca 1 eksiltiyor .

Yine de personel son nereye dokunduğunu kaçırıyor , tek çare son tıklananı renklendirmek.. Bu kodlara nasıl bir düzenleme ile bunu başarabiliriz ?

--------
Option Explicit

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
On Error GoTo Son
If Intersect(Target, [I11:AU29]) Is Nothing Then Exit Sub
If Target.Column <> 13 And Target.Column <> 18 And Target.Column <> 23 And _
Target.Column <> 28 And Target.Column <> 33 And Target.Column <> 38 And Target.Column <> 43 Then
Cancel = True
Target = Target + 1

End If

Exit Sub
Son:

End Sub



Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
Target.Value = Target.Value - 1

End Sub
 
Son düzenleme:
Arşivler içinde , aktif hücreyi renklendirmek için şu kodu buldum ve uyguladım:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Static EskiHucre As Range
If Target.Interior.ColorIndex <> xlColorIndexNone Then
EskiHucre.Interior.ColorIndex = xlColorIndexNone
Exit Sub
ElseIf Not EskiHucre Is Nothing Then
EskiHucre.Interior.ColorIndex = xlColorIndexNone
End If
Target.Interior.ColorIndex = 3
Set EskiHucre = Target
End Sub

Ancak " Target.Interior.ColorIndex = 3 " satırında hata verdi ve interior sınıfının colorindex özelliği kurulamıyor .. İnceledim ama pek de içinden çıkamadım .

Aktif edildikten sonra tıklandığı ve sayının arttığı durumda
veya
en azından hücre tek tıkla aktif edilince o hücreyi renklendirerek göz kaymasının önüne nasıl geçebilirim ?
 
Son düzenleme:
Bir renk oluşturmak yetecek. Site içinde bulduğum kodların hiçbiri nedense cevap vermedi .
Acaba nerde hata yapıyor-um ...
 
Geri
Üst