verdiğim aralıktaki değerleri hücreye yazmama izin verme

Katılım
22 Nisan 2005
Mesajlar
121
Excel Vers. ve Dili
xp
Merhaba arkadaslar
iki değerim var bu iki değer aralığındaki sayıları (yada tarih olabilir)
belirlediğim kolondaki herhangi bir hücrye yazmama izin vermesin
istiyorum.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
ile birşeyler denedim ama beceremedim.
yardımcı olabilirmisiniz
tesekkurler
 
Katılım
22 Nisan 2005
Mesajlar
121
Excel Vers. ve Dili
xp
Re: verdiğim aralıktaki değerleri hücreye yazmama izin v

galkan' Alıntı:
Merhaba arkadaslar
iki değerim var bu iki değer aralığındaki sayıları (yada tarih olabilir)
belirlediğim kolondaki herhangi bir hücrye yazmama izin vermesin
istiyorum.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
ile birşeyler denedim ama beceremedim.
yardımcı olabilirmisiniz
tesekkurler
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,245
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selamlar,

Ekteki örneği inceleyiniz.

Veri doğrulama ile yapılmıştır.
 
Katılım
22 Nisan 2005
Mesajlar
121
Excel Vers. ve Dili
xp
sayın COST CONTROL
benim makro ile yapmam gerekiyor
ilginize cok tesekkurler
 

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 galkan

Cevap için verileriniz çok yetersiz, örneğin iki değeri nereden alacak ve hangi hücre/hücrelerdeki girilen değerler kontrol edilecek. Bu tür detayları vermezseniz, kesin cevap almanız pek mümkün olmayacaktır.
 
Katılım
22 Nisan 2005
Mesajlar
121
Excel Vers. ve Dili
xp
Sayın leventm

kodları aslında iki türlü kullanacağım

Birincisi

sayfa2 nin E kolonuna E3 ten başlayıp aşağı doğru
rakamlar yazıyorum ve bunları E1 e toplatıyorum
=TOPL(E3:E65536) şeklinde

Sayfa1 J25 te önceden yazmış olduğum bir rakam var
toplam rakam bunu geçtiğinde F kolonuna rakam yazmam
engellensin istiyorum.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Sheets("Sayfa2").Range("E1").Value> Sheets("Sayfa1").Range("J25").Value Then
MsgBox "Tutarı geçemezsiniz"
End If
End Sub

Þeklinde yapmaya çalıştım. Bu işimi görüyor. Burada yazdığım rakamı
clear ettiremedim. Çünkü Enter ile aşağıdaki hücreye geçebileceğim
gibi ok tuşları ilede sağa sola gitme durumu sözkonusu.
Activecell.offset(-1,0).value="" bu durumda işe yaramadı.
neyse bu o kadar önemli değil.

İkincisi

Yine Sheet2'nin B kolonuna B3'ten başlayıp B65536'ya kadar
tarih yazmam gerekiyor. Bu sefer Sayfa1'in A7 hücresinde başlangıç,
E7 hücresinde ise bitiş tarihim var. Yazacağım tarihler bu ikisi arasında
olmaz ise beni uyarsın istiyorum. İşte bunu bir türlü beceremedim.
Hatta farklı tarih yazmamı bir mesaj ile engellerse daha
şık olur.

Yardımlarınız için şimdiden teşekkürler.
 
Katılım
22 Nisan 2005
Mesajlar
121
Excel Vers. ve Dili
xp
Sayın COST CONTROL
Eklediğiniz dosyaya yeni bakabildim.
Elinize sağlık çok güzel olmuş.
Ancak sanırım ben başta biraz eksik anlatmışım.
Sizin yaptığınızın tam tersini yapmak istiyorum
Belirlediğim başlangıç ve bitiş tarihleri dahil
arada kalan tarihleri yazmama izin versin
bunun dışındakileri yazmama izin vermesin istiyorum.
Koddaki ">=" i "<" olarak, "<=" i de ">" olarak değiştirdim
ama kod istediğim gibi çalışmadı.
Sanırım
If Intersect(Target, [A:A]) Is Nothing Then Exit Sub
satırından kaynaklanıyor. Buradaki
Intersect,Target ve Is Nothing ifadeleri ne anlama geliyor? (Ã?ğrenmek açısından soruyorum)
Birde tarihi yazdıktan sonra "Enter" veya "Aşağı ok" tuşları ile
bir alt hücreyi seçtiysem kod çalışıyor ancak sağ,sol veya yukarı
tuşlarını kullandıysam kod işlevini yapmamış oluyor.
tarihi yazdıktan sonra hangi tuşa bastığımı kontrol ettirebilirmiyim.

Ã?rneğin
tarihi yazıp "enter" tuşuna basmış isem
ActiveCell.Offset(-1).Value = ""

tarihi yazıp "sağ ok" tuşuna basmış isem
ActiveCell.Offset(0,-1).Value = ""

şeklinde kontrol ettirebilirmiyim.

İlginiz için tesekkurler.
 
Katılım
22 Nisan 2005
Mesajlar
121
Excel Vers. ve Dili
xp
Arkadaşlar
Bu konuda bilgisi olan herkesten yardım bekliyorum.
Acil yapmam gereken bir iş vardı burada takılıp kaldım.
Tesekkurler
 

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 COST_CONTROL'un dosyasındaki kodu aşağıdaki ile değiştirerek deneyin.

[vb:1:8651aac6a3]Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Intersect(Target, [A:A]) Is Nothing Then Exit Sub
If Target <= [C1] Or Target >= [D1] Then Target.ClearContents
End Sub[/vb:1:8651aac6a3]

[vb:1:8651aac6a3]Intersect,Target ve Is Nothing ifadeleri ne anlama geliyor?[/vb:1:8651aac6a3]

intersect komutu kodun çalışacağı hücreler aralığını sınırlamak için kullanılmıştır. Burada target yani hedef hücre (son işlem yapılan hücreyi ifade eder) sadece A sütununda ise kod çalışacaktır. Koddaki "is nothing" bunu sağlamaktadır. Zaten kelimelerin ingilizce karşılıklarını yerine koyarsanız size kodun anlamını verecektir. Bunu şöyle ifade edebiliriz.

Target yani hedef hücreniz A sütununundaki hücrelerden (intersect;[A:A]) biri değilse (is nothing) kodu sonlandır (Exit sub)
 
Katılım
22 Nisan 2005
Mesajlar
121
Excel Vers. ve Dili
xp
Çok teşekkür ederim sayın leventm :D

Bu komutlarının anlamına ilave olarak
"If" komutunun da farklı kullanıldığını
ilk defa görmüş oldum. :?
(If,Then,Else,End If) bize hep böyle öğretilmişti. :eek:
 
Katılım
22 Nisan 2005
Mesajlar
121
Excel Vers. ve Dili
xp
Yuppi.....

Sayın leventm nin verdiği kodların en altına

"Target.Activate"

ilave ettim işin diğer kısmınıda halletmiş olduk.

Ne iyi oldu şu "Target" komutunu öğrenmem

Bende hep "Enter"a mı, "Sağ Ok Tuşu"na mı,.... bastım kodlarla
bunu bulmaya çalışıyordum. Kodlarla bunu kontrol edip,
Activecell.Offset komutu ile Hedef Hücreye yaniii Target'e
dönmeye çalışıyordum.

İyiki varsınız arkadaşlar :arkadas: :D

İyiki varsın
excel.web.tr :dua:
 
Üst