Yan Hücredeki Seçime Göre aktif hücreye bilgi yazılması

Katılım
22 Ekim 2009
Mesajlar
151
Excel Vers. ve Dili
2007&2010
Merhaba Arkadaşlar,

bir sorum var Excel de örneğin A1 Hücresinde listbox ile belli bilgiler default seçtiriyorum.

Örnek; List Boxda Hastalık, Doktor Kontrolü, Proje yazıyor.

Ben A1 Hücresindeki listboxımdan Proje harici bir seçim yaparsam A1 hücresinde yazan bilgiyi B1 hücresine yazsın,
Ancak ben listbox dan Proje seçersem bir input Box açılsın ve proje adının 49 karakteri geçmeyecek şekilde inputboxa girilmesini istesin.

İnputboxa proje adı girildiğinde bu bilgiyi B1 hücresine yazsın.

bu kontrol ve işlemler her yeni satırda devam etsin yani aktif hücrede.

Olay A ve B kolonlarında gerçekleşecek Listbox seçimleri A Kolonunda veri girişi B kolonunda olacak.

Bu konuda bana yardımcı olabilirseniz çok memnun olurum.
Şimdiden ellerinize sağlık diyor teşekkür ediyorum

Saygılarımla
 
Katılım
22 Ekim 2009
Mesajlar
151
Excel Vers. ve Dili
2007&2010
B kolonundaki hücrelere sadece macro giriş yapabilecek kullanıcı giriş yapamayacak. amacım b kolonunun karışmasını ve kullnıcıların B kolonunu çorba yapmalarını engellemek.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
41,560
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Aşağıdaki kodu ilgili sayfanın kod bölümüne uygulayınız.

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Target, Range("A2:A" & Rows.Count)) Is Nothing Then Exit Sub
    If Target.Cells.Count > 1 Then Exit Sub
    If Target.Value = "Proje" Then
10      Proje = Application.InputBox("Lütfen proje açıklaması giriniz." & Chr(10) & _
                "En çok 49 karakter uzunluğunda açıklama yazınız.", "AÇIKLAMA")
        If Proje = "" Or Proje = False Then GoTo 10
        If Len(Proje) > 49 Then
            MsgBox "Lütfen 49 karakter uzunluğunda açıklama giriniz.", vbExclamation
            GoTo 10
            Exit Sub
        Else
            Target.Next.Value = Proje
        End If
    Else
        Target.Next.Value = Target.Value
    End If
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Column = 2 Then
        MsgBox "AÇIKLAMA sütununa elle veri girişi yapmayınız!", vbCritical
        If Selection.Cells.Count = Rows.Count Then
            Selection.Previous.EntireColumn.Select
        Else
            Selection.Previous.Select
        End If
    End If
End Sub
 
Katılım
22 Ekim 2009
Mesajlar
151
Excel Vers. ve Dili
2007&2010
Çok teşekkür ederim Korhan hocam tam istediğim gibi ancak 2. kod alanında B kolonu yada B kolonunda ki hücreleri seçemiyor ya bu sıkınıtı çünkü içine yazılan değeri hücreyi seçemediğimiz için alıp kopyalama vs gibi durumları yapamayacağız.

Kullanıcı kolonu yada hücreyi seçebilsin ancak değiştiremesin yada manuel elle giriş yapamasın şeklinde olabilirmi?

Saygılarımla
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
41,560
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Bu durumda kod aşağıdaki gibi değiştirip deneyiniz.

Kod:
Dim Eski_Veri As Variant, Onay As Boolean

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("A2:A" & Rows.Count)) Is Nothing Then
        If Target.Cells.Count > 1 Then Exit Sub
        If Target.Value = "Proje" Or Target.Value = "Aynı Güne 1'den Fazla Giriş" Then
10          Onay = False
            Proje = Application.InputBox("Lütfen proje açıklaması giriniz." & Chr(10) & _
                    "En çok 49 karakter uzunluğunda açıklama yazınız.", "AÇIKLAMA")
            If Proje = "" Or Proje = False Then GoTo 10
            If Len(Proje) > 49 Then
                MsgBox "Lütfen 49 karakter uzunluğunda açıklama giriniz.", vbExclamation
                GoTo 10
                Exit Sub
            Else
                Onay = True
                Target.Next.Value = Proje
            End If
        Else
            Onay = True
            Target.Next.Value = Target.Value
        End If
    End If

    If Not Intersect(Target, Range("B2:B" & Rows.Count)) Is Nothing Then
        If Onay = False Then
            If Target.Value <> Eski_Veri Then
                MsgBox "AÇIKLAMA sütununa elle veri girişi yapmayınız!", vbCritical
                Target.Value = Eski_Veri
            End If
        End If
    End If
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Onay = False
    Eski_Veri = Target.Value
End Sub
 
Katılım
22 Ekim 2009
Mesajlar
151
Excel Vers. ve Dili
2007&2010
Korhan Hocam birde Proje seçimine ek olarak "Aynı Güne 1'den Fazla Giriş" seçeneği seçilirse de aynı süreç işlesin ben "Proje" Or "Aynı Güne 1'den Fazla İş Giriş" olarak yaptım ama Type mismacth hatası veriyor
 
Katılım
22 Ekim 2009
Mesajlar
151
Excel Vers. ve Dili
2007&2010
Verdiğiniz Kodu kullandığımda a kolonundan yeni bir seçimde yapsam AÇIKLAMA sütununa elle veri girişi yapmayınız! uyarası veriyor
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
41,560
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
#7 nolu mesajımdaki kodu güncelledim. Tekrar deneyiniz.
 
Katılım
22 Ekim 2009
Mesajlar
151
Excel Vers. ve Dili
2007&2010
Elinize kolunuza aklınıza sağlık hocam tşk ederim.
 
Üst