Excel - tek karakterden sonra diğer hücreye geçiş?Çözüldü

Kodla Büyü

DotCom

Hiperaktif Üye
Hiperaktif
Mesajlar
2,918
Merhaba ,

Excel'de veri girişini hızlandırmak için şöyle bir işlem yaptırmaya çalışıyorum.

A sütununa 1 ile 5 arasında veri gireceğim.
A1 hücresine 1 yazdıktan hemen sonra A2 hücresine otomatik geçmesini sağlamaya çalışıyorum.

Herhangi bir tuşa basmaya gerek kalmadan sonraki hücreye nasıl geçiş yaptırabilirim?
 
Re: Ecel - tek karakterden sonra diğer hücreye geçiş?

valla bende takipteyim. excelde hücre kapanmadan içindeki veriyi görmüyor, onaylayana kadar eski veri geçerli oluyor. olursa değişik olacak :)
 
Re: Excel - tek karakterden sonra diğer hücreye geçiş?

Hocam belki makro ile yapilabilir sanirim. hucrenin tusa basilma durumu icin kod yazilip kontrol edilebilir diye dusunuyorum
 
Re: Excel - tek karakterden sonra diğer hücreye geçiş?

veri doğrulama ile listeden veri alarak ardından şu kodlar...

Private Sub Worksheet_Change(ByVal Target As Range)
i = ActiveCell.Row
a = ActiveCell.Column
If ActiveCell.Value >= 1 And ActiveCell.Value <= 5 Then
Cells(i, a + 1).Select
SendKeys "{F2}"
End If
End Sub


geliştirilebilir...
 

Ekli dosyalar

  • otamatik.rar
    27.3 KB · Görüntüleme: 65
Re: Excel - tek karakterden sonra diğer hücreye geçiş?

intel4004' Alıntı:
veri doğrulama ile listeden veri alarak ardından şu kodlar...

Private Sub Worksheet_Change(ByVal Target As Range)
i = ActiveCell.Row
a = ActiveCell.Column
If ActiveCell.Value >= 1 And ActiveCell.Value <= 5 Then
Cells(i, a + 1).Select
SendKeys "{F2}"
End If
End Sub


geliştirilebilir...

Hocam sayı sınırlandırması tamam da bir sonraki hücreye geçmesi için mi bu formül, birde bu formül nereye yazılacak....
 
Re: Excel - tek karakterden sonra diğer hücreye geçiş?

Alt+f11 ile kod düzenleyiciyi açın

Kodlar açılan sayfaya yapıştırılacak.

Benim excelde sorun var galiba. Makrolar etkinleştirilmesine rağmen ilgili kod bulunamadı hatası veriyor
 
Re: Excel - tek karakterden sonra diğer hücreye geçiş?

kodlar sayfa sekmesi üzerinde sağ tıklayarak açılan menüden "Kod görüntüle " bölümüne yazılacak
sayı sınırlamasını veri doğrulama kullanarak ya da özel bir form tasarlayarak yapmak gerekir çünkü excel veri değişimini algılamak için hücreye verinin tam olarak yazılmasını bekler yani hücreye yazılan karakter sayısını anlık olarak teyit ettiremezsiniz. " bildiğim kadarıyla"
veri doğrulama ile yapılan seçim anlık teyit işleminin yerini tutar..
hücrede yapılan değişim sayfa değişimini tetikleyerek kodu çalıştırır. kod ile diğer bölümlerdeki hücre sıçramasını engellmek için koşullu ifade ardından seçili hücrenin yan hücresine geçiş yapılır.

burada hücre sıçramasının sadece A sütunundan B sütununa geçiş için geçerli olması istenirse

Cells(i, a + 1).Select yerine
Cells(i, 2).Select kullanılabilir.
 
Re: Excel - tek karakterden sonra diğer hücreye geçiş?

Hocam otomatik olarak bir alt hücreye geçmiyor...
 
Re: Excel - tek karakterden sonra diğer hücreye geçiş?

örnekte soldan sağa geçiş var yani aynı satır üzerinde geçiş

sütun üzerinde geçiş için
Cells(i, a + 1).Select
ifadesini
Cells(i + 1, a).Select
ile değiştirin
 
Re: Excel - tek karakterden sonra diğer hücreye geçiş?

Bana balık verme Hacı Balık tutmasını öğret.... :)
 
Re: Excel - tek karakterden sonra diğer hücreye geçiş?

Şu işinizi görür otomatik olarak hücreye girdi açma işlemini çıkardım.
(SendKeys "{F2}")

Kolay gelsin...

Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
i = ActiveCell.Row
a = ActiveCell.Column
If ActiveCell.Value >= 1 And ActiveCell.Value <= 5 Then
Cells(i + 1, a).Select

End If
End Sub
 

Ekli dosyalar

  • otamatik2.rar
    26.8 KB · Görüntüleme: 46
Re: Excel - tek karakterden sonra diğer hücreye geçiş?

intel4004' Alıntı:
Şu işinizi görür otomatik olarak hücreye girdi açma işlemini çıkardım.
(SendKeys "{F2}")

Kolay gelsin...

Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
i = ActiveCell.Row
a = ActiveCell.Column
If ActiveCell.Value >= 1 And ActiveCell.Value <= 5 Then
Cells(i + 1, a).Select

End If
End Sub

Kodlar için teşekkürler sayın hocam.

comboxdan seçmek yerine klavyeden girişe göre işlem yapmasını nasıl sağlayabiliriz?

Epeyce bir kayıt için tek tek fare ile seçim yapmak zaman alacağa benziyor.

Klavyeden sadece 1-5 tuşlarına basarak sonraki hücreye geçebilsek tam istediğimiz işlem olacak.

Araştırmaya devam ediyorum.

http://www.excelforum.com/excel-general ... -cell.html
şöyle bir şey buldum ama çalıştıramadım henüz. Benim Excel'de sorun var sanırım.
 
Re: Excel - tek karakterden sonra diğer hücreye geçiş?

Dediğim gibi bildiğim kadarıyla hücre içerisindeki veriyi anlık kontrol eden bir fonksiyon yok ancak bir form tasarlıyarak bu işlem de yapılabilir...

Herhalde şu iş görür. Form aç tuşu ile açılan formda a sütunu için değer kontrolü yapılmadan tek tuşa basılmasıyla değer yazarak alt satıra geçer...
 

Ekli dosyalar

  • form denetimi.rar
    34.4 KB · Görüntüleme: 45
Re: Excel - tek karakterden sonra diğer hücreye geçiş?

koşul eklemek isterseniz aşağıdaki örnek yeterli olur sanırım...
Private Sub TextBox1_Change()
Dim alan, satırsayısı, sonsatır
Set alan = Cells(1, 1).CurrentRegion
satırsayısı = WorksheetFunction.CountA(Range("A1:A10001"))
sonsatır = satırsayısı + 1

If TextBox1.Value >= 1 And TextBox1.Value <= 5 Then

Cells(sonsatır, 1).Value = TextBox1.Value
End If
TextBox1.Value = ""

End Sub
 
Re: Excel - tek karakterden sonra diğer hücreye geçiş?

Çözüm :

sayfa kodu olarak
Kod:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    CheckSingleDigitEntry Target
    ' other Selection_Change code
End Sub

modül kodu olarak
Kod:
Sub CheckSingleDigitEntry(ByVal Target As Range)
    ' shg 2010
    Const iCol      As Long = 3    ' start column for single-digit entry
    Const lCol      As Long = 9    ' last column for single-digit entry
    
    Static iRow     As Long
    
    Dim iDigit      As Long

    With Target
        If .Count > 1 Then Exit Sub

        If .Column = iCol Then
            .Resize(, lCol - iCol + 1).ClearContents
            For iDigit = Asc("0") To Asc("9")
                Application.OnKey Chr(iDigit), "'InsertDigit " & Chr(iDigit) & "'"
            Next iDigit
            iRow = .Row

        ElseIf .Row <> iRow Or .Column < iCol Or .Column > lCol Then
            For iDigit = Asc("0") To Asc("9")
                Application.OnKey Chr(iDigit)
            Next iDigit
            
            iRow = 0
        End If
    End With
End Sub

Public Sub InsertDigit(sKey As String)
    With ActiveCell
        .Value = sKey
        .Offset(1).Select
    End With
End Sub

Bu kodlarla istediğim işlemi yaptırabildim.

Katılımınız için çok teşekkür ederim @intel4004
 
Kod:
Sub CheckSingleDigitEntry(ByVal Target As Range)
    ' shg 2010
    Const iCol      As Long = 1    ' start column for single-digit entry
    Const lCol      As Long = 5   ' last column for single-digit entry
    Static bInit    As Boolean
    Dim bOn         As Boolean
    Dim iDigit      As Long

    With Target
        If .Count > 1 Then Exit Sub

        If .Column >= iCol And .Column <= lCol Then
            If Not bOn Or Not bInit Then
                For iDigit = Asc("0") To Asc("5")
                    Application.OnKey Chr(iDigit), "'InsertDigit " & CLng(Chr(iDigit)) & "'"
                Next iDigit
                bOn = True
                bInit = True
            End If

        ElseIf bOn Or Not bInit Then
            For iDigit = Asc("0") To Asc("5")
                Application.OnKey Chr(iDigit)
            Next iDigit
            bOn = False
            bInit = True
        End If
    End With
End Sub

Public Sub InsertDigit(i As Long)
    With ActiveCell
        .Value = i
        .Offset(1).Select
    End With
End Sub

bende bu kodlarla yaptırdım ama halen anlayamadım 3 yerine 1 yazınca 1. sütundan başlıyor ancak 5 neyi etkiliyor...
kodları açıklayabilecek bir bilen varsa vba bilgimiz bir miktar daha artmış olacak...

intel4004' Alıntı:
Dediğim gibi bildiğim kadarıyla hücre içerisindeki veriyi anlık kontrol eden bir fonksiyon yok ancak bir form tasarlıyarak bu işlem de yapılabilir...

Herhalde şu iş görür. Form aç tuşu ile açılan formda a sütunu için değer kontrolü yapılmadan tek tuşa basılmasıyla değer yazarak alt satıra geçer...

mesajdaki örnekde iş görüyor ama her seferinde son satırdan eklemeye devam ediyor üzerinde çalışılmalı...
 
Kod:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    CheckSingleDigitEntry Target
    ' other Selection_Change code
End Sub

typhoon' Alıntı:
Kod:
Sub CheckSingleDigitEntry(ByVal Target As Range)
    ' shg 2010
    Const iCol      As Long = 1    ' start column for single-digit entry
    Const lCol      As Long = 5   ' last column for single-digit entry
    Static bInit    As Boolean
    Dim bOn         As Boolean
    Dim iDigit      As Long

    With Target
        If .Count > 1 Then Exit Sub

        If .Column >= iCol And .Column <= lCol Then
            If Not bOn Or Not bInit Then
                For iDigit = Asc("0") To Asc("5")
                    Application.OnKey Chr(iDigit), "'InsertDigit " & CLng(Chr(iDigit)) & "'"
                Next iDigit
                bOn = True
                bInit = True
            End If

        ElseIf bOn Or Not bInit Then
            For iDigit = Asc("0") To Asc("5")
                Application.OnKey Chr(iDigit)
            Next iDigit
            bOn = False
            bInit = True
        End If
    End With
End Sub

Public Sub InsertDigit(i As Long)
    With ActiveCell
        .Value = i
        .Offset(1).Select
    End With
End Sub

bende bu kodlarla yaptırdım ama halen anlayamadım 3 yerine 1 yazınca 1. sütundan başlıyor ancak 5 neyi etkiliyor...
kodları açıklayabilecek bir bilen varsa vba bilgimiz bir miktar daha artmış olacak...

intel4004' Alıntı:
Dediğim gibi bildiğim kadarıyla hücre içerisindeki veriyi anlık kontrol eden bir fonksiyon yok ancak bir form tasarlıyarak bu işlem de yapılabilir...

Herhalde şu iş görür. Form aç tuşu ile açılan formda a sütunu için değer kontrolü yapılmadan tek tuşa basılmasıyla değer yazarak alt satıra geçer...

mesajdaki örnekde iş görüyor ama her seferinde son satırdan eklemeye devam ediyor üzerinde çalışılmalı...
 
Günde 3,5 saat televizyon seyredince 70 yılda ömründen 10 yıl gidiyormuş diyorlar ya
işte her seferinde 2 yerine bir tuşa basınca yapılan işin süresi %50 düşecek
yani mantık o mantık
 
Satırda hareket eden versiyon için 5, hareket edilecek sutun sınırını belirliyor.

İhtiyaca göre değiştirilebilir.

Yüksek miktarda veri girişi yapılacağı zaman faydası çok oluyor gerçekten.
 
Geri
Üst